일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- email api 구현
- map
- 토큰
- ispresent
- JPQL
- 티스토리챌린지
- string.repeat()
- 코틀린
- string?
- 스프링 부트
- 이메일 본인인증
- 스프링
- javamailsender
- @embededid
- kotlin
- 자바
- 널 허용
- 오블완
- Spring Boot
- 객체지향
- Token
- Spring
- JPA
- 복합 키
- embededid
- jpa repository
- java
- entity
- devpi
- mutablemap
- Today
- Total
DeveloPiano
[Java] super 키워드 사용법 본문
자바 프로그래밍에서 상속은 매우 중요한 개념입니다. 상속을 통해 코드를 재사용하고, 유지보수성을 높일 수 있습니다. 상속을 사용하는 과정에서 자주 등장하는 키워드 중 하나가 바로 super입니다. 오늘은 이 super 키워드가 무엇인지, 어떻게 사용하는지에 대해 알아보겠습니다.
정의 및 기능
super 키워드란?
super 키워드는 상위 클래스(부모 클래스)의 멤버를 참조하거나 상위 클래스의 생성자를 호출하기 위해 사용됩니다.
이는 두 가지 주요 용도로 나눌 수 있습니다.
- 상위 클래스의 생성자 호출
- 상위 클래스의 메서드 호출
상위 클래스의 생성자 호출
상위 클래스의 생성자를 호출할 때는 super()를 사용합니다. 하위 클래스의 생성자 내부에서 super()를 호출하여 상위 클래스의 생성자를 명시적으로 호출할 수 있습니다. 만약 super()를 명시적으로 호출하지 않으면, 컴파일러가 자동으로 상위 클래스의 기본 생성자를 호출합니다.
class Parent {
public Parent() {
System.out.println("Parent constructor called");
}
}
class Child extends Parent {
public Child() {
super(); // 상위 클래스의 기본 생성자를 호출
System.out.println("Child constructor called");
}
}
public class Test {
public static void main(String[] args) {
Child c = new Child();
}
}
위 예제에서 Child 클래스의 생성자는 super()를 사용하여 Parent 클래스의 생성자를 호출합니다. 출력 결과는 다음과 같습니다.
Parent constructor called
Child constructor called
상위 클래스의 메서드 호출
상위 클래스에서 오버라이드된 메서드를 호출하기 위해 super 키워드를 사용할 수도 있습니다. 하위 클래스에서 동일한 메서드를 정의할 때, 상위 클래스의 메서드를 호출하고 싶다면 super.methodName() 형식으로 호출합니다.
class Parent {
public void display() {
System.out.println("Parent method");
}
}
class Child extends Parent {
public void display() {
super.display(); // 상위 클래스의 메서드 호출
System.out.println("Child method");
}
}
public class Test {
public static void main(String[] args) {
Child c = new Child();
c.display();
}
}
위 예제에서 Child 클래스의 display 메서드는 super.display()를 사용하여 Parent 클래스의 display 메서드를 호출합니다. 출력 결과는 다음과 같습니다.
Parent method
Child method
요약
- super(): 상위 클래스의 생성자를 호출합니다. 생성자 내부에서만 사용될 수 있으며, 하위 클래스 생성자의 첫 줄에 위치해야 합니다.
- super.methodName(): 상위 클래스의 메서드를 호출합니다. 오버라이드된 메서드를 호출할 때 사용됩니다.
super 키워드는 클래스 상속 구조에서 상위 클래스의 멤버를 명시적으로 참조하거나 호출할 때 매우 유용합니다. 이를 통해 하위 클래스는 상위 클래스의 기능을 재사용하고, 확장된 기능을 구현할 수 있습니다.
'Develop > Java' 카테고리의 다른 글
[Java] Class와 Record : 정의, 특징, 그리고 차이점 이해하기 (1) | 2024.08.09 |
---|---|
[Java] 예외 처리의 이해 : try-catch와 throws의 차이점 (0) | 2024.08.09 |
[Java] JPA 엔티티 : 외래키 설정 vs ID 저장 방식 비교 (1) | 2024.08.03 |
[Java] @RequiredArgsConstructor와 @NoArgsConstructor : 생성자를 자동으로 관리하는 방법 (0) | 2024.07.31 |
[Java] 인터페이스(Interface)와 구현 클래스의 상속 관계 (0) | 2024.07.13 |