코딜기
[Java] super와 super() 본문
반응형
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