21. 오버라이딩(Overriding)

박은서's avatar
Jan 01, 2026
21. 오버라이딩(Overriding)

1. 오버라이딩(Overriding)

교재 p.

1️⃣ 오버라이딩이란?

상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것
부모의 메서드를 무효화
override : 무시하다

2️⃣ 오버라이딩 기본 조건(핵심)

항목
조건
상속 관계
메서드 이름
동일
매개변수
동일
반환 타입
같거나 하위
접근 제한자
같거나 더 넓게
➡️ 모든 조건을 반드시 만족해야 함

❌ 오버라이딩 불가한 경우

  • static 메서드
  • final 메서드
  • private 메서드

3️⃣ 예제

class Animal { void sound() { System.out.println("동물 소리"); } } class Dog extends Animal { @Override void sound() { System.out.println("멍멍"); } }
Animal a = new Dog(); a.sound(); // 멍멍
➡️ 동적바인딩(메서드가 어느 클래스의 것이 실행될지 ‘실행 시점’에 결정됨)

4️⃣ 실습

package ex06.ch02; class Car { void run(){ } } class Morning extends Car { void run(){ System.out.println("모닝 달린다."); } } class Sonata extends Car { // 부모의 메서드를 재정의하면 // 자식이 부모의 메서드를 오버라이드한다. // 오버라이드 : 무시하고 대신한다. void run(){ System.out.println("소나타 달린다."); } } public class ExMeh01 { public static void main(String[] args) { Morning a1 = new Morning(); // [Morning(v), Car] a1.run(); // "모닝 달린다." 출력 Car a2 = new Sonata(); a2.run(); // "소나타 달린다." 출력 } }
추상화로 타입을 일치시키면 자식의 상태 접근이 안됨
오버라이드를 통해서 부모를 바라봐도 자식의 상태에 간접적으로 접근할 수 있음(getter, setter)
추상클래스(abstract class), 추상메서드(abstract + 메서드)
 
Share article