반응형
이번 글에서는 자식 클래스에서 부모 클래스의 메서드를 재정의(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)을 실현할 수 있음
'Java > 자바 정리' 카테고리의 다른 글
59. final 메서드 – 오버라이딩을 금지하기 (0) | 2025.05.07 |
---|---|
[ 간단 정리 57+ ] 자바, 오버라이딩과 오버로딩의 차이점 (0) | 2025.05.07 |
58. super 키워드로 부모 메서드 호출하기 (오버라이딩 활용) (0) | 2025.05.02 |
56. super(...)를 통한 부모 생성자 호출 (0) | 2025.05.02 |
55. 클래스 상속(Inheritance) - 부모 기능을 자식 클래스에서 확장 (0) | 2025.05.02 |
54. Getter/Setter를 이용한 캡슐화 (Encapsulation) (0) | 2025.04.29 |