*이 포스트는 남궁성님의 '자바의 정석'책을 참고하여 작성했습니다.
* Super
: super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조 변수이다. 멤버변수와
지역변수의 이름이 같을 때 this를 사용해서 구별했듯이 상속받은 멤버와 자신의 클래스에 정의된 멤버의 이름이 같을 때는 super를 사용해서 구별할 수 있다.
(조상 클래스와 자손 클래스의 멤버가 중복 정의되어 서로 구별해야하는 경우에만 super를 사용하는 것이 좋다.)
- 예제
class Parent {
int x = 100;
}
class Child extends Parent {
int x = 200; // Q. 이 문장("int x = 200;"이 없다면 출력결과는 무엇일까?
void method() {
System.out.println("x=" + x);
System.out.println("this.x=" + this.x);
System.out.println("super.x=" + super.x);
}
}
class Test {
public static void main(String args[]) {
Child c = new Child();
c.method();
}
}
-> 실행결과
x = 200
this.x = 200
super.x = 100
* 메서드 역시 super를 써서 호출할 수 있다.
(특히 조상 클래스의 메서드를 자손 클래스에서 오버라이딩한 경우에 super를 사용한다.)
- 예제
class Point {
int x;
int y;
String getLocation() {
return "x : " + x + ",y : " + y;
}
}
class Point3D extends Point {
int z;
String getLocation() {
return super.getLocation() + ",z : " + z; //조상의 메서드 호출
}
}
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java(package(패키지)) (0) | 2018.03.15 |
---|---|
Java(왜 자바에서 static의 사용을 지양해야 하는가?) (5) | 2018.03.13 |
Java(오버로딩(oveloading) VS 오버라이딩(overriding)) (0) | 2017.08.17 |
Java(오버라이딩(overriding)) (0) | 2017.08.17 |
Java(초기화 블록) (0) | 2017.08.04 |