Java/자바 정리

57. 메서드 오버라이딩(Method Overriding)

코딩하는냥이 2025. 5. 2. 14:49
반응형

이번 글에서는 자식 클래스에서 부모 클래스의 메서드를 재정의(overriding) 하여
동일한 이름의 메서드를 다른 방식으로 실행하는 구조를 학습합니다.
오버라이딩은 객체의 다형성을 지원하는 핵심 개념입니다.


📦 부모 클래스 코드 (Calculator.java)

package ch07.sec04.exam01;

public class Calculator {
	public double areaCircle(double r) {
		System.out.println("Calculator 객체의 areaCircle() 실행");
		return 3.14159 * r * r;
	}
}

📦 자식 클래스 코드 (Computer.java)

package ch07.sec04.exam01;

public class Computer extends Calculator {
	public double areaCircle(double r) {
		System.out.println("Computer 객체의 areaCircle() 실행");
		return Math.PI * r * r;
	}
}

📌 실행 코드 (ComputerExample.java)

package ch07.sec04.exam01;

public class ComputerExample {
	public static void main(String[] args) {
		int r = 10;

		Calculator cal = new Calculator();
		System.out.println("원 면적 : " + cal.areaCircle(r) + "\n");

		Computer com = new Computer();
		System.out.println("원 면적 : " + com.areaCircle(r));
	}
}

💬 코드 설명

  • Calculator.areaCircle(double r)
    → 원의 넓이를 계산하는 기본 메서드
    → π 대신 3.14159 사용
  • Computer.areaCircle(double r)
    오버라이딩된 메서드
    → Math.PI를 사용하여 더 정밀하게 계산
    → 동일한 메서드명 + 시그니처로 부모 메서드를 덮어씀
  • com.areaCircle(10) 호출 시 → 자식 클래스의 오버라이딩 메서드가 실행됨

🖥 실행 결과

Calculator 객체의 areaCircle() 실행
원 면적 : 314.159

Computer 객체의 areaCircle() 실행
원 면적 : 314.1592653589793

📌 간단 정리

클래스 실행 메서드 결과
Calculator areaCircle() 3.14159 * r²
Computer areaCircle() (오버라이딩) Math.PI * r²

💡 포인트 정리

  • 오버라이딩은 부모 메서드를 자식 클래스에서 재정의하는 것
  • 메서드 이름, 매개변수, 반환 타입이 완전히 동일해야 함
  • 자식 클래스 객체를 사용하면 오버라이딩된 메서드가 호출됨
  • 오버라이딩은 동일한 동작을 다른 방식으로 구현할 때 유용
  • 메서드 오버라이딩을 통해 다형성(polymorphism)을 실현할 수 있음