[Java/ChatGPT] Day 9: 메서드 오버라이딩(Method Overriding)과 super 키워드
dev.jelee2025. 6. 19. 02:55
[ 학습 목표 ]
메서드 오버라이딩 개념을 이해한다.
부모 클래스의 메서드를 자식 클래스에서 재정의하는 방법을 익힌다.
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(); 단, 생성자는 생성자 안에서만 사용 가능하다.