728x90
오버라이딩(Overriding)이란?
부모 클래스의 메서드를 자식 클래스에서 같은 이름, 같은 매개변수, 같은 리턴타입으로 재정의하는 것
- 기존 기능을 자식 클래스에 맞게 변경할 수 있음
- @Override 어노테이션을 붙여 명확하게 표시하는 것이 좋음
오버라이딩의 조건
조건 | 설명 |
메서드 이름 | 같아야 함 |
매개변수 | 개수, 순서, 타입 동일해야 함 |
리턴 타입 | 동일해야 함 |
접근 제어자 | 부모보다 더 넓은 범위만 가능 |
예외 처리 | 부모보다 더 좁거나 동일한 수준만 가능 |
예제: 부모 메서드 오버라이딩하기
부모 클래스
public class Animal {
void sound() {
System.out.println("동물이 소리를 냅니다.");
}
}
자식 클래스
public class Dog extends Animal {
@Override
void sound() {
System.out.println("멍멍!");
}
}
실행
Dog d = new Dog();
d.sound(); // 출력: 멍멍!
@Override 어노테이션
- 오버라이딩이 맞는지 컴파일러가 체크해줌
- 실수로 이름을 틀리거나 매개변수를 잘못 쓰면 오류 발생
@Override
void sound() {
System.out.println("멍멍!"); // 정확하게 재정의한 경우만 OK
}
부모 타입으로 자식 객체 참조 → 다형성 활용
Animal a = new Dog(); // 업캐스팅
a.sound(); // 출력: 멍멍! (자식 메서드 호출됨)
오버라이딩 덕분에 동적 바인딩이 가능해지고,
하나의 타입으로 다양한 객체를 유연하게 사용할 수 있어요.
오버로딩(Overloading)과의 차이
구분 | 오버라이딩 | 오버로딩 |
위치 | 부모-자식 클래스 간 | 같은 클래스 내 |
목적 | 기능 재정의 | 기능 다양화 |
이름 | 같음 | 같음 |
매개변수 | 동일해야 함 | 다르게 해야 함 |
리턴타입 | 동일 | 달라도 가능 |
마무리 요약
개념 | 설명 |
오버라이딩 | 부모 클래스의 메서드를 자식 클래스가 재정의 |
조건 | 이름, 매개변수, 리턴타입 모두 같아야 함 |
활용 | 다형성, 동적 바인딩 구현 |
어노테이션 | @Override 사용 권장 |
실습 아이디어
- Animal → Cat, Dog, Cow 각각 sound() 오버라이딩
- Vehicle → Car, Bike 각각 start() 오버라이딩
- 다형성 배열 활용: Animal[] zoo = { new Dog(), new Cat() };
LIST
'JAVA > 객체지향 프로그래밍 (OOP) 기초' 카테고리의 다른 글
강아지/고양이 클래스 만들기 (2) | 2025.04.13 |
---|---|
부모 타입으로 자식 객체 다루기 (0) | 2025.04.13 |
extends 키워드로 상속하기 (0) | 2025.04.13 |
인스턴스 메서드 vs 클래스(static) 메서드 (0) | 2025.04.13 |
생성자의 개념 및 오버로딩 (0) | 2025.04.12 |