private 와 final 의 설명 및 예

private-이 클래스 에서 만 사용 할 수 있 습 니 다.
\##왜 private 1 을 사용 합 니까?for safety from rep exposure(유출 방지)는 구성원 변수 에 private 수식 자 를 사용 한 다음 에 set,get 방법 을 통 해 구성원 변 수 를 가 져 오고 할당 해 야 합 니 다.2.private 로 인해 발생 하 는 set,get 방법 에서 외부 에서 입력 한 변수의 값 이 우리 의 규범 에 맞 는 지 판단 할 수 있 습 니 다.if 문 구 를 사용 하여 판단 할 수 있 습 니 다(if 문 구 는 방법 체 외 에 사용 할 수 없습니다.그래서 set 방법 이 없 으 면 입력 을 제한 할 수 없습니다.\##private 를 사용 한 후 어떻게 자체 속성 을 가 진 참조 데이터 형식 을 만 듭 니까?예 를 들 어 보드게임 에 하나의 플레이어(게이머 류)가 있 습 니 다.게이머 에 게 이름 을 게이머 의 유일한 표지 로 해 야 합 니 다.동시에 game(게임 류)에 새 유 저 를 만 들 고 게이머(즉,게이머 이름)를 초기 화 합 니 다.그러면 이 일련의 조작 은 어떻게 실현 합 니까?다음은 구조 방법의 다른 측면 에서 두 가지 방안 을 제시한다.
**\#클래스 에 인삼 이 없 는 구조 방법,**자바 는 자동 으로 인삼 이 없 는 구조 방법 을 생 성 합 니 다.1.우선 Player 클래스 에서 구성원 변수 정의 구역 에서 name 변 수 를 정의 합 니 다.
private String name;

name 은 private 입 니 다.game 이 name 에 접근 하려 면 player 류 의 get,set 방법 을 통 해 만 접근 할 수 있 습 니 다.2.Player 에 getName,setName 방법 을 쓰 십시오.
public String getName() {
    return name;
}
public void setName(String name){
    this.name = name;
}

3.game 류 에 새로 생 긴 Player 대상 은 일반적으로 뒤쪽 접근 에 빈 포인터 이상 이 발생 하 는 것 을 방지 하기 위해(자바 프로그램 에서 흔히 볼 수 있 는 오류 입 니 다)직접 new 가 나 옵 니 다.또한 인삼 이 없 는 구조 함수 입 니 다.name 이 없습니다.
Player player = new Player();

이 때 Player 대상 에 게 메모리 가 쌓 인 주 소 를 주 었 습 니 다.Player 대상 은 비어 있 지 않 습 니 다.4.game 클래스 에 initplayer 방법 을 쓰 고 main 함수 에서 game.initplayer 방법 을 사용 하여 게이머 대상 을 초기 화 합 니 다.initplayer 방법 에서 player.setName 방법 을 호출 합 니 다.이렇게 해서 유저 에 게 이름 을 주 었 습 니 다.
public void initplayer(String name) {
    player.setName(name);
}

\#클래스 에 인삼 이 있 는 구조 함수 가 있 으 면 자바 는 인삼 이 없 는 구조 방법 을 자동 으로 생산 하지 않 습 니 다.필요 하 다 면 스스로 생 성 하 십시오.1.인삼 을 가 진 구조 방법,new 는 인자 name 을 입력 해 야 합 니 다.그러나 사람의 이름 은 천변만화 합 니 다.어떻게 고정된 이름 을 줄 수 있 습 니까?2.우 리 는 먼저 무의미 한 이름 을 줄 수 있다.그리고 다른 클래스 에서 실제 이름 을 입력 할 때 호출 하 는 방법 setName.
Player player = new Player("001");
player.setName("Rose");

이렇게 해서 유저 에 게 도 이름 을 부여 합 니 다.\##private 를 사용 한 후 구성원 변 수 를 가 져 오 는 방법 은 get 방법 을 사용 하면 됩 니 다.예 를 들 어.우 리 는 game 류 에서 private 의 Player 대상 을 정의 해 야 하지만,Game 의 하위 클래스 에서 도 이 Player 대상 을 방문 해 야 합 니 다.그러면 어떻게 해 야 합 니까?1.game 클래스 에 getPlayer 방법 을 쓴다.
public Player getplayer() {
    return this.player;
}

2.game 의 하위 클래스 chessgame 에서 이 Player 대상 방법 을 호출 해 야 할 때 다음 과 같이 조작 합 니 다.하위 클래스 에서 get 방법 을 사용 할 때 this 를 사용 하여 현재 대상 을 표시 합 니 다.다른 상 관 없 는 클래스 에 서 는 new 플레이어 대상(예 를 들 어 p)그리고 p.getPlayer.addpiece 입 니 다.
this.getplayer().addpiece(WKing);

final–초기 화 된 변 수 는 다른 값/대상 을 가리 킬 수 없습니다.
final 기본 지식 점(1)수식 류 는 계승 할 수 없습니다.2)수식 방법 은 다시 쓰 면 안 된다.(3)c 변 수 를 수식 할 때 값 을 다시 할당 할 수 없습니다.\#\#왜 final 을 private 와 같이 사용 하 는 지,프로그램의 안전성 을 위해 외부 에서 우리 의 변 수 를 임의로 수정 할 수 없 도록 하기 때문에 for safety from rep exposure(누설 방지)도 가능 한 한 final 수식 자 를 사용 해 야 합 니 다.그러나 이것 이 우리 의 변 수 를 수정 할 수 없다 는 것 을 명확 하 게 알 아야 한다.주소 가 가리 키 는 내용 이 아 닌 인용(주소)을 수정 할 수 없습니다.왜 final String a="jack"이 a 는 a="rose"를 사용 할 수 없습니다.그러나 final Map map,final List list 이후 에 도 map.pt,list.pt 등 방법 으로 호출 할 수 있 습 니 다.이것 은 final 이 바 뀐 것 이 도대체 무엇 인지 에 관 한 문제 이다.
  • final 은 초기 화 된 변수 가 다른 값/대상 을 가리 키 지 못 한 다 는 뜻 입 니 다.주소(참조)는 변 할 수 없 지만 주소 가 가리 키 는 내용 은 변 할 수 있다 는 뜻 입 니 다
  • Map,list 의 add,put 등 작업 에 대해 map,list 의 인용 을 수정 하지 않 고 인용 이 가리 키 는 내용 만 수정 하 였 기 때문에 map,list 로 제공 하 는 방법 을 사용 할 수 있 습 니 다

  • 4.567917.인 스 턴 스 변수 에 대해 새로운 대상 이 되면 이 대상 에 메모리 주 소 를 할당 합 니 다.예 를 들 어 final Person p=new Person("장삼");(1)p 주소 변경 불가:p=new ArrayList();/오류(2)person 클래스 에서 name 은 private 속성,p.name="왕 오";/오류 정정:Person 에 setName 방법 을 쓰 고 p.setName("왕 5")을 호출 합 니 다.p 의 주 소 는 변 하지 않 았 습 니 다
  • String 은 속성 을 수정 하 는 방법 을 제공 하지 않 았 습 니 다.가설:b.setValue("String 의 값 수정");/정확 하지만 실제 상황 은 String 이 자신의 값 을 수정 하 는 방법 을 제공 하지 않 았 습 니 다.그 는 가 변 적 이지 않 은 클래스 입 니 다.매번 String 에 값 을 다시 부여 할 때마다 String 대상(주소 도 변 했 습 니 다)을 새로 만 들 었 습 니 다.이렇게 해서 String 의 값 을 바 꿉 니 다.메모:final 이 기본 형식 을 수식 할 때 기본 형식의 값 은 바 꿀 수 없습니다.자바 의 기본 형식 은 자신의 값 을 수정 하 는 방법 을 제공 하지 않 기 때문에 매번 새로운 값 을 부여 할 때마다 새로운 대상 을 만 듭 니 다

  • 그래서 안전 을 위해 가능 한 한 final 을 사용 하지만 사용 하기 전에 우리 가 필요 로 하 는 부분 이 있 는 지 없 는 지 를 생각해 보 세 요.new 대상 이 있 으 면 사용 할 수 없습니다.

    좋은 웹페이지 즐겨찾기