[ 학습 목표 ]
- 메서드 오버라이딩 개념을 이해한다.
- 부모 클래스의 메서드를 자식 클래스에서 재정의하는 방법을 익힌다.
- super 키워드를 통해 부모 생성자 또는 메서드에 접근하는 방법을 배운다.
[ 이론 ]
1. 메서드 오버라이딩이란?
- 부모 클래스의 메서드를 자식 클래스에서 재정의(덮어쓰기)하는 것.
2. 오버라이딩 조건
- 메서드 이름, 매개변수, 반환 타입 모두 동일
- 접근 제어자는 같거나 더 넓어야 함
- @Override 어노테이션을 붙여서 오버라이딩임을 명확히 표시(권장)
3. Super 키워드란?
- 부모 클래스의 필드, 메서드, 생성자에 접근할 때 사용
super.메서드(); // 부모의 메서드 호출
super(); // 부모의 생성자 호출 (생성자 안에서만 사용 가능)
4. 오버라이딩과 super 예시
public class Animal {
void sound() {
System.out.println("동물이 소리를 냅니다.");
}
}
public class Dog extends Animal {
@Override
void sound() {
System.out.println("멍멍!");
}
void callParentSound() {
super.sound(); // 부모 클래스의 sound 메서드 호출
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.sound(); // 멍멍!
dog.callParentSound(); // 동물이 소리를 냅니다.
}
}
[ 실습 ]
✅ 실습 1: Person, Student 클래스에 오버라이딩 적용
public class Person {
String name;
void introduce() {
System.out.println("안녕하세요, 저는 " + name + "입니다.");
}
}
public class Student extends Person {
int studentId;
@Override
void introduce() {
super.introduce(); // 부모의 introduce() 호출
System.out.println("학번은 " + studentId + "입니다.");
}
}
public class Main {
public static void main(String[] args) {
Student s = new Student();
s.name = "김철수";
s.studentId = 12345;
s.introduce();
// 출력:
// 안녕하세요, 저는 김철수입니다.
// 학번은 12345입니다.
}
}
[ 메모 ]
- 오버라이딩은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것이다. 재정의라는 건 덮어쓰기
- 오버라이딩 조건으로는
- @Override 어노테이션을 명확히 표시해줘야 한다.
- 메서드 이름, 매개변수, 변환 타입이 모두 동일해야한다.
- 접근 제어자는 같거나 더 넓어야 한다.
- super 키워드는 부모 클래스의 필드, 메서드, 생성자에 접근할 때 사용한다.
- 사용은 메서드를 호출할 때에는 super.메서드(); / 생성자를 호출할 때에는 super(); 단, 생성자는 생성자 안에서만 사용 가능하다.
'개발 공부 > Java | SpringBoot' 카테고리의 다른 글
[Java/ChatGPT] Day 11: 추상 클래스와 인터페이스(Abstrac Class & Interface) (0) | 2025.06.19 |
---|---|
[Java/ChatGPT] Day 10: 다형성(Polymorphism)과 업캐스팅/다운캐스팅 (0) | 2025.06.19 |
[Java/ChatGPT] Day 8: 상속(Inheritance)의 개념과 기본 사용법 (0) | 2025.06.17 |
[Java/ChatGPT] Day 7: 생성자 오버로딩 (Constructor Overloading) (0) | 2025.06.16 |
[Java/ChatGPT] Day 6: static 키워드와 클래스 변수/메서드 이해하기 (0) | 2025.06.15 |