코딜기

[Java] super와 super() 본문

Language/Java

[Java] super와 super()

코딜기 2024. 9. 2. 19:44
반응형

super란?

  • super 키워드는 상속받은 부모 객체를 참조할 때 사용하는 키워드입니다.
  • '.'을 통해 부모 클래스의 필드나 메서드에 접근할 수 있으며, super()를 사용하여 부모 클래스의 생성자를 호출하는 것도 가능합니다.

super 사용 (메서드)

  • 사람의 정보를 출력하는 간단한 Person 클래스(부모 클래스)를 만들어줍니다.
public class Person {
    String name;
    int age;

    String info() {
        return "이름: " + name + ", 나이: " + age;
    }
}
  • Student 클래스(자식 클래스)를 만들고, Person 클래스를 상속받습니다.
  • 부모가 물려주는 메서드인 info()에 Student가 가지는 고유한 속성인 studentId 정보만 추가하는 오버라이딩을 진행합니다.
public class Student extends Person {
    String studentId;

    @override
    String info() {
        return super.info() + "학번: " + studentId;
    }
}
  • 부모 메서드 결과를 기반으로 해서 자식의 고유 속성만 추가해 주었습니다.
    • 부모의 메서드를 불러오기 위해 super.info()를 호출해 주었고, 리턴된 문자열에 studentId만 추가를 해주었습니다.

super() 사용 (생성자)

  • 생성자를 통해 사람의 정보를 저장하는 간단한 Person 클래스(부모 클래스)를 만들어줍니다.
  • Person의 생성자는 name을 매개변수로 받아서 저장합니다.
public class Person {
    String name;
    int age;

    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }
}
    • Student 클래스(자식 클래스)를 만들고, Person 클래스를 상속받습니다.
    • Student의 생성자는 name studentId를 매개변수로 받아서 저장합니다.
    • 자식 클래스의 생성자 내에서 name studentId를 초기화할 수도 있지만, 자식 생성자는 부모 생성자를 호출해야 객체를 생성할 수 있으므로, 부모 생성자를 호출하여 name을 초기화하고, studentId는 자식 클래스에서 직접 초기화합니다.
public class Student extends Person {
    String studentId;

    public Student(String name, String studentId) {
        super(name);
        this.studentId = studentId;
    }
}
  • super(name)부모의 생성자 중 name이라는 String을 받을 수 있는 생성자를 호출하고 있는 것을 볼 수 있습니다.
반응형

'Language > Java' 카테고리의 다른 글

[Java] 다형성의 타입 캐스팅 (Type Casting)  (0) 2024.09.19
[Java] 다형성 (Polymorphism)  (0) 2024.09.19
[Java] 오버라이딩 (Overriding)  (0) 2024.09.02
[Java] 상속 (Inheritance)  (0) 2024.09.02
[Java] 상수 (Constant)  (0) 2024.08.29
Comments