super 키워드와 super()

BuZZLightyear·2023년 2월 27일
0

정리

목록 보기
6/47

super

상위 클래스의 객체 호출

super()

상위 클래스의 생성자 호출

공통적으로 모두 상위 클래스의 존재를 상정하며 상속관계를 전제로 함

super 예시

class SuperClass {
    int count = 20; // super.count
}

class SubClass extends SuperClass {
    int count = 15; // this.count

    void callNum() {
        System.out.println("count = " + count);
        System.out.println("this.count = " + this.count);
        System.out.println("super.count = " + super.count);
    }
}
    public static void main(String[] args) {
        SubClass subClassInstance = new SubClass();
        subClassInstance.callNum();

    }
count = 15
this.count = 15
super.count = 20

super키워드를 붙이지 않으면 자신이 속한 인스턴스 객체의 멤버를 먼저 참조함.

  1. 자기에게서 가장 가까운 count 변수 15를 뜻함
  2. this.count 자신이 호출된 객체의 인스턴스변수 15를 뜻함
  3. super 키워드를 통해 상위클래스 객체의 인스턴스변수 20을 뜻함

super() 예시

class Human {
    Human() {
        System.out.println("휴먼 클래스 생성자");
    }
}

class Student extends Human { // Human 클래스로부터 상속
    Student() {
        super(); // Human 클래스의 생성자 호출
        System.out.println("학생 클래스 생성자");
    }
}
    public static void main(String[] args) {
        Student s = new Student();

    }
휴먼 클래스 생성자
학생 클래스 생성자

super()메서드도 this()메서드처럼 생성자 안에서만 사용가능하고, 가장 첫 줄에 와야한다.
student 클래스에서 super()메서드로 상위클래스의 생성자를 호출했기 때문에 상위클래스의 생성자가 먼저 출력되고 하위클래스의 생성자가 출력됨.

profile
버즈라이트이어

0개의 댓글