참조변수 super
: 객체 자신을 가리키는 참조변수 (= this)
- 인스턴스 메서드 (생성자) 내에만 존재 (static 메서드에서 사용 불가)
- 조상의 멤버를 자신의 멤버와 구별할 때 사용
class Parent {
int x = 10;
int y = 10;
}
class Child extends Parent {
int x = 20;
void method() {
// 부모와 변수 이름이 같을 경우 this.x super.x로 구분한다.
System.out.println(x); // 20
System.out.println(this.x); // 20
System.out.println(super.x); // 10
// 상속 받았으므로 this.y, super.y 둘 다 사용가능하다.
System.out.println(y); // 10
System.out.println(this.y); // 10
System.out.println(super.y); // 10
}
조상의 생성자 super()
- 조상의 생성자를 호출할 때 사용
- 조상의 멤버는 조상의 생성자를 호출해서 초기화
- 반드시 생성자의 첫 줄에 생성자를 호출해야 한다. (컴파일러가 자동으로 super() 삽입)
- 결론은 클래스 생성 시 기본 생성자 작성은 필수
class Point {
int x, y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
class Point3D extends Point {
int z;
Point3D(int x, int y, int z) {
super(x, y); // 조상클래스의 생성자를 호출 = Point(x, y)
this.z = z;
}
}
728x90
반응형
'객체지향 OOP' 카테고리의 다른 글
[자바의정석 기초 객체지향 개념] 제어자 static, final, abstract / 접근 제어자 / 캡슐화 (0) | 2022.05.30 |
---|---|
[자바의정석 기초 객체지향 개념] package, import (0) | 2022.05.30 |
[자바의정석 기초 객체지향 개념] 오버로딩 VS 오버라이딩 (0) | 2022.05.30 |
[자바의정석 기초 객체지향 개념] 상속 VS 포함 (0) | 2022.05.30 |
[자바의정석 기초 객체지향 개념] 메서드 (0) | 2022.05.29 |
댓글