super 키워드 역할
상속 관계에서 부모 클래스의 멤버에 접근하고 활용하는데 사용됩니다.
자식 클래스에서 동일한 이름의 멤버 변수가 있을 경우, super 키워드를 통해 부모 클래스의 멤버 변수에 접근할 수 있음을 의미합니다.
자식 클래스에서 오버라이딩을 하고 super 키워드를 사용하면 부모 클래스의 기능(메서드)을 확장할 수 있습니다.
super 키워드 멤버변수 예제
class Parent {
String name = "부모";
}
class Child extends Parent {
String name = "자식";
public void show() {
System.out.println(name); // 자식
System.out.println(this.name); // 자식
System.out.println(super.name); // 부모
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child();
child.show();
}
}
super 키워드 메서드 예제
class Parent {
public void show() {
System.out.println("부모");
}
}
class Child extends Parent {
@Override
public void show() {
super.show(); // 부모
System.out.println("자식"); // 자식
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child();
child.show();
}
}
super() 역할
자식 클래스의 생성자에서 부모 클래스의 생성자를 호출합니다. 이를 통해 자식 클래스에서 부모 클래스의 초기화를 호출하는 역할을 수행합니다. 그러면서 자식 클래스가 생성될 때 필요한 초기화가 원활하게 이루어집니다. 부모 클래스의 생성자에 전달할 인수를 포함할 수 있습니다.
super() 예제
class Parent {
String name;
Parent(String name) {
this.name = name;
System.out.println("부모 생성자 호출");
}
}
class Child extends Parent {
String name;
Child(String parentName, String childName) {
super(parentName);
this.name = childName;
System.out.println("자식 생성자 호출");
}
void show() {
System.out.println(super.name);
System.out.println(this.name);
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child("부모", "자식");
child.show();
}
}
부모 클래스에서 name을 가지고 있는 생성자를 정의하고, 자식 클래스에서 super()를 통하여 부모 클래스를 호출하여 name을 초기화합니다.
'JAVA > 객체 지향 프로그래밍' 카테고리의 다른 글
[JAVA] 다형성이란 (0) | 2023.08.19 |
---|---|
[JAVA] 메서드 오버라이딩 조건 (0) | 2023.08.18 |
[JAVA] 상속의 정의와 개념 (0) | 2023.08.16 |
[JAVA] 객체의 생성과 사용 (0) | 2023.08.16 |
[JAVA] 클래스의 정의와 구조 (0) | 2023.08.15 |