super
super 는 부모 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조 변수이다.
상속받은 멤버와 자식의 클래스 정의한 멤버의 이름이 같을 때는 super를 사용해서 구별 할 수있다.
즉, 부모 클래스의 멤버와 자식 클래스의 멤버가 중복 정의되어 서로 구별해야하는 경우에만 super를 사용하는것이 좋다.
Ex//
class test{
public static void main(String args[])
{
Child ch = new Child();
c.Play();
}
class Parent{
int a = 2019;
}
class Child extends Parent{
int a = 2020;
void Play()
{
System.out.plrintln("x = " + a);
System.out.plrintln("x = " + this.a);
System.out.plrintln("x = " + super.a);
}
}
결과
x = 2020
x = 2020
x = 2019
조상 클래스의 메서드를 자손 클래스에서 오버라이딩 하는 경우에 super를 사용한다.
super() 조상 클래스의 생성자를 호출하는데 사용된다.
*Obeject 클래스를 제외한 모든 클래스의 생성자 첫 줄에는 생성자(같은 클래스의 다른 생성자 또는 조상의 생성자)를 호출해야한다. 그렇지 않으면 컴파일러가 자동적으로 생성자 첫줄에 super를 삽입한다.