728x90
참조변수 super
- 객체 자신을 가리키는 참조변수, 인스턴스 메서드(생성자)내에만 존재
- 조상의 멤버를 자신의 멤버와 구분할 때 사용
▶ this : 현재 클래스의 참조를 가리킵니다
▶ super : 부모 클래스의 참조를 가리킵니다
예제1
예제2
둘다 같은 주소를 가르키니 this.x 와 super.x가 동일한 10 으로 나온다.
생성자 super()
- 조상의 생성자를 호출할 때 사용
- 조상의 멤버는 조상의 생성자를 호출해서 초기화
▶ this() : 같은 클래스의 다른 생성자를 호출할 때 사용
▶ super() : 자식 생성자 안에서 부모 클래스의 생성자를 호출할 때 사용한다.
자손의 생성자가 조상의 멤버를 초기화하고있다.
자손의 생성자는 자신이 선언한 것만 초기화 해야한다
위 예제의 Point3D는 아래와 같은 코드로 변경해야 한다.
Point3D(int x, int y, int z){
super(x, y);
this.z = z;
}
- 생성자의 첫 줄에 반드시 생성자를 호출해야 한다 ★
- 그렇지 않으면 컴파일러가 생성자의 첫 줄에 super(); 를 삽입
예제
class Point {
int x;
int y;
Point(){
this(0,0); //ok
}
Point(int x, int y){
// super() 조상의 기본생성자 호출
this.x = x;
this.y = y;
}
}
▼
//컴파일후
Class Point extends Object {
int x;
int y;
Point(){
this(0,0);
}
Point(int x, int y){
super(); //object;
this.x = x;
this.y = y;
}
}
모든 생성자는 첫줄에 다른 생성자를 호출해야한다.
728x90
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] 컴파일, 빌드, 배포에 대해 이해하기 (0) | 2023.01.17 |
---|---|
[JAVA] String.format() - %d, %n, %f, %c, %s, %b (0) | 2022.12.28 |
[JAVA] 이름 붙은 반복문 (0) | 2022.12.04 |
[JAVA] 22-07-27 객체 문자정보(toString()) / 객체복제(clone()) (0) | 2022.07.27 |
[JAVA-이것이자바다.10장] 예외 확인 문제 (0) | 2022.07.24 |