프로그래밍 언어/Java

Java(Super)

benjykim 2017. 8. 17. 19:04
반응형

*이 포스트는 남궁성님의 '자바의 정석'책을 참고하여 작성했습니다.


* 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;         //조상의 메서드 호출

}

}




반응형