자바 에서 슈퍼 의 몇 가지 용법 과 this 의 차이

4410 단어 자바
1.하위 클래스 의 구조 함수 가 슈퍼 를 인용 하려 면 슈퍼 를 함수 의 첫 번 째 에 두 어야 합 니 다.
class Base {

Base() {

System.out.println("Base");

}

}


public class Checket extends Base {

Checket() {

super();//         ,            

System.out.println("Checket");

}


public static void main(String argv[]) {

Checket c = new Checket();

}

}

 
슈퍼 로 아버지 구 조 를 계승 하 는 방법 을 사용 하고 싶 지만 첫 줄 에 두 지 않 았 다 면 슈퍼 이전의 문 구 는 자신 이 어떤 행 위 를 완성 하고 자 하 는 문 구 를 만족 시 키 기 위해 서 였 을 것 이다.그러나 슈퍼 로 아버 지 를 계승 하 는 구조 방법 을 사용 했다.그러면 예전 에 한 수정 은 모두 예전 으로 돌아 가 고 다시 아버지 류 의 구조 방법 이 되 었 다 는 것 이다.
2.자바 에 서 는 하위 클래스 의 구성원 변수 나 방법 이 초 클래스(때로는 부모 클래스 라 고도 함)의 구성원 변수 나 방법 과 동명 이인 을 만 날 수 있 습 니 다.하위 클래스 의 구성원 변수 나 방법 명 우선 순위 가 높 기 때문에 하위 클래스 의 동명 멤버 변수 나 방법 은 초 클래스 의 구성원 변수 나 방법 을 숨 깁 니 다.그러나 우 리 는 초 클래스 의 이 구성원 변수 나 방법 을 사용 하려 면 슈퍼 를 사용 해 야 합 니 다.
name 과 방법 value()는 코드 에 슈퍼,슈퍼.name,슈퍼.value()를 사 용 했 습 니 다.슈퍼.value()를 호출 하지 않 으 면 슈퍼.name 은 부모 클래스 의 기본 값 null 을 되 돌려 줍 니 다.이 방법 을 호출 할 때 슈퍼.value()방법 은 구성원 변 수 를 China 로 할당 하고 슈퍼.name 을 이용 하여 부모 클래스 의 구성원 변 수 를 호출 합 니 다.
 
또한,주의해 야 할 것 은 슈퍼.name 이 구성원 변수의 값 을 호출 하 는 것 입 니 다.
슈퍼.name 이 되 돌려 주 는 값 은 부모 구성원 변수의 값 xianfan 입 니 다.이때 슈퍼.value()방법 은 작 동 하지 않 습 니 다.
 
3.슈퍼 로 매개 변 수 를 직접 전달:
class Person {

public static void prt(String s) {

System.out.println(s);

}


Person() {

prt("A Person.");

}


Person(String name) {

prt("A person name is:" + name);

}

}


public class Chinese extends Person {

Chinese() {

super(); //         (1)

prt("A chinese.");// (4)

}


Chinese(String name) {

super(name);//                (2)

prt("his name is:" + name);

}


Chinese(String name, int age) {

this(name);//                (3)

prt("his age is:" + age);

}


public static void main(String[] args) {

Chinese cn = new Chinese();

cn = new Chinese("kevin");

cn = new Chinese("kevin", 22);

}

} 

   :A Person.

A chinese.

A person name is:kevin

his name is:kevin

A person name is:kevin

his name is:kevin

his age is:22


 이 프로그램 에서 this 와 슈퍼 는 예전 처럼'...'로 한 방법 이나 구성원 을 연결 하 는 것 이 아니 라 그 다음 에 적당 한 인 자 를 직접 따라 가 는 것 이기 때문에 그 의미 도 달 라 졌 다.슈퍼 후 파 라 메 터 를 추가 하 는 것 은 부모 클래스 에서 같은 형식의 구조 함 수 를 호출 하 는 것 입 니 다.예 를 들 어 1 과 2 곳 입 니 다.this 후 매개 변 수 를 추가 하면 현재 같은 매개 변 수 를 가 진 구조 함수,예 를 들 어 3 곳 을 호출 합 니 다.물론 Chinese 의 각 재 부팅 구조 함수 에서 this 와 슈퍼 는 일반적인 방법 에서 도 사용 할 수 있 습 니 다.예 를 들 어 4 곳 에서'this.prt'(부모 클래스 의 그 방법 을 계 승 했 기 때 문)또는'슈퍼.prt'(부모 클래스 의 방법 이 고 이불 클래스 에 접근 할 수 있 기 때 문)로 바 꿀 수 있 습 니 다.하지만 이 정도 면 사족 을 그 리 는 맛 이 나 는 것 같다.
 
4.슈퍼 와 this 의 공통점 과 차이 점:
1)슈퍼(매개 변수):기본 클래스 의 특정한 구조 함수(구조 함수 의 첫 번 째 문 구 를 호출 해 야 합 니 다)
2)this(매개 변수):이 클래스 에서 다른 구조 함수(구조 함수 의 첫 번 째 문 구 를 위해 야 함)3)슈퍼:현재 대상 의 직접 부모 클래스 의 구성원(직접 부모 클래스 에 숨겨 진 부모 클래스 의 구성원 데이터 나 함수 에 접근 하 는 데 사용 합 니 다.기본 클래스 와 파생 클래스 에 같은 구성원 정의 가 있 을 때:슈퍼.변수 이름 슈퍼.구성원 함수 이름(실제 참조)
4)this:현재 대상 이름 을 대표 합 니 다.(프로그램 에서 이의 성 이 생기 기 쉬 운 곳 은 this 를 사용 하여 현재 대상 을 가 리 켜 야 합 니 다.함수 의 형 참여 클래스 의 구성원 데이터 가 동일 하 다 면,이 때 this 로 구성원 변수 이름 을 가리 켜 야 합 니 다)
 
5)슈퍼()를 호출 하려 면 하위 구조 방법의 첫 줄 에 써 야 합 니 다.그렇지 않 으 면 컴 파일 이 통과 되 지 않 습 니 다.모든 하위 구조 방법의 첫 번 째 문 구 는 슈퍼()를 함 축적 으로 호출 하 는 것 이다.만약 에 부모 류 가 이런 형식의 구조 함수 가 없다 면 컴 파일 할 때 잘못 보고 할 것 이다.
6)슈퍼()는 this()와 유사 하 며,슈퍼()는 하위 클래스 에서 부모 클래스 의 구조 방법 을 호출 하고,this()는 같은 클래스 에서 다른 방법 을 호출 하 는 것 과 구별 된다.
7)슈퍼()와 this()는 모두 구조 방법 내 첫 줄 에 놓 아야 한다.
8)this 로 구조 기 를 호출 할 수 있 지만 두 개 를 호출 할 수 없습니다.
9)this 와 슈퍼 는 하나의 구조 함수 에 동시에 나타 날 수 없다.this 는 반드시 다른 구조 함 수 를 호출 할 것 이기 때문에 다른 구조 함수 도 반드시 슈퍼 문장의 존재 가 있 기 때문에 같은 구조 함수 에 같은 문구 가 있 으 면 문장의 의 미 를 잃 고 컴 파일 러 도 통과 하지 못 한다.
10)this()와 슈퍼()는 모두 대상 을 가리 키 기 때문에 static 환경 에서 사용 할 수 없습니다.포함:static 변수,static 방법,static 구문 블록.
11)본질 적 으로 this 는 본 대상 을 가리 키 는 지침 이지 만 슈퍼 는 자바 키워드 이다.

좋은 웹페이지 즐겨찾기