728x90
반응형
super 키워드
`super`는 자식 클래스에서 부모 클래스의 멤버 변수와 메서드에 접근하고 호출하는 데 사용되며,
객체 지향 프로그래밍에서 상속 관계를 더 강력하고 유연하게 만들어주는 도구입니다.
1. `super` 키워드의 역할과 의미
`super` 키워드는 현재 객체가 속한 클래스의 상위 클래스(부모 클래스)의 멤버 변수와 메서드에 접근할 수 있도록 해줍니다.
자식 클래스에서 부모 클래스와의 연결을 강화하는 역할을 합니다.
즉, `super`를 이용하여 부모 클래스의 기능을 그대로 사용하거나 재정의할 수 있습니다.
2. `super`의 주요 사용 방법
2 - 1. 부모 클래스의 생성자 호출
자식 클래스의 생성자에서 `super`를 사용하여 부모 클래스의 생성자를 명시적으로 호출할 수 있습니다.
이렇게 함으로써 자식 클래스에서 반드시 호출되어야 하는 부모 클래스의 생성자를 호출할 수 있습니다.
class Parent {
Parent(int x) {
// 부모 클래스의 생성자
}
}
class Child extends Parent {
Child(int x, int y) {
super(x); // 부모 클래스의 생성자 호출
}
}
2 - 2. 부모 클래스의 맴버 변수와 메서드 접근
`super`를 이용하여 부모 클래스의 멤버 변수와 메서드에 접근할 수 있습니다.
만약 자식 클래스에서 부모 클래스와 동일한 이름의 멤버 변수나 메서드를 가지고 있다면,
`super`를 이용하여 부모 클래스의 멤버를 명시적으로 참조할 수 있습니다.
class Parent {
int x;
void display() {
System.out.println("Parent class");
}
}
class Child extends Parent {
int x;
void display() {
super.display(); // 부모 클래스의 display() 메서드 호출
System.out.println("Child class");
System.out.println("Child class x: " + x);
System.out.println("Parent class x: " + super.x); // 부모 클래스의 멤버 변수 x 접근
}
}
3. `super`의 주의 사항
- `super`은 첫 번째 줄에 위치해야 합니다.
- `super()`를 사용하여 부모 클래스의 생성자를 호출하는 경우, 이 코드는 반드시 자식 클래스의 생성자의 첫 번째 줄에 위치해야 합니다.
- 그렇지 않으면 컴파일 에러가 발생합니다.
- `super`와 `this`를 동시에 사용할 수 없습니다.
- `super`와 `this` 키워드는 동시에 사용할 수 없습니다.
- `this`는 자신의 클래스 내의 멤버를 참조하는 데 사용되고, `super`는 부모 클래스의 멤버를 참조하는 데 사용되기 때문에 서로 충돌이 발생할 수 있습니다.
`super` 키워드는 자바에서 상속 관계를 강력하고 유연하게 만드는 중요한 도구입니다.
부모 클래스의 멤버 변수와 메서드에 접근하여 자식 클래스에서 기존 기능을 재사용하거나 재정의할 수 있게 합니다.
잘못된 정보는 댓글로 알려주시면 감사하겠습니다.
728x90
반응형
'Java' 카테고리의 다른 글
Java - 32. 자바의 final 키워드 (0) | 2023.08.03 |
---|---|
Java - 31. 자바의 다형성(Polymorphism)과 타입 변환(casting) 연산자 (0) | 2023.08.02 |
Java - 29. 자바의 this 키워드 (0) | 2023.07.31 |
Java - 28. 자바 상속(Inheritance) (0) | 2023.07.30 |
Java - 27. 자바 싱글톤 패턴(Singleton Pattern) (0) | 2023.07.29 |