Java

[Java] super & super()

junga 2022. 9. 11. 23:34

super


  • 자식클래스가 부모클래스로부터 상속받은 멤버를 참조할 때 사용하는 참조 변수이다.
  • 클래스 내의 멤버변수와 지역변수의 이름이 같을 경우 구분을 위해 this를 사용하듯
  • 부모클래스와 자식클래스의 멤버가 이름이 같을 경우 super를 사용한다.
class Parent {
    int a = 100;
}


class Child extends Parent {
    int a = 200;

    void display() {
        System.out.println(a);       // 200
        System.out.println(this.a);  // 200
        System.out.println(super.a); // 100
    }
}


public class Main {
    public static void main(String[] args) {
        Child ch = new Child();
        ch.display();
    }
}
// 지역변수와 this참조변수는 자식클래스에서 대입된 값을 출력하며,
// super참조변수는 부모클래스에서 대입된 값을 출력한다.


super()


  • this() 메소드가 같은 클래스의 다른 생성자를 호출할 때 사용된다면,
  • super() 메소드는 부모클래스의 생성자를 호출할 때 사용된다.
class Parent {
    int a ;

    Parent(int n) {
        a = n;
    }
}


class Child extends Parent {
   Child(int n) {
       super(n);
   }

    void display() {
        System.out.println(a);  // 100
    }
}


public class Main {
    public static void main(String[] args) {
        Child ch = new Child(100);
        ch.display();
    }
}

상속에 대한 글을 쓰면서 super()를 써본 적이 있다.
상속 시 부모의 생성자는 상속받지 않는다 해서
부모 생성자에 매개변수가 있으면 어떻게 되는지 궁금해서 찾아봤었다.
[Java] 상속과 Object 클래스