728x90
2023.01.12 - [JAVA/Java 기초] - 상속.java
상속.java
2023.01.11 - [JAVA/Java 기초] - 싱글톤 패턴.java 싱글톤 패턴.java 2023.01.11 - [JAVA/Java 기초] - Getter & Setter .java Getter & Setter .java 2023.01.11 - [JAVA/Java 기초] - 패키지.java 패키지.java 2023.01.11 - [JAVA/Java 기초] -
less-go.tistory.com
메소드 오버라이딩
- 상속된 메소드를 자식 클래스에서 재정의하는 것.
- 해당 부모 메소드는 숨겨지고, 자식메소드가 우선적으로 사용됩니다.

- 부모 메소드의 선언부(리턴 타입, 메소드 이름, 매개변수)와 동일해야합니다,
- 접근 제한을 더 강하게 오버라이딩 할 수 없습니다.(public -> private 변경 불가)
- 새로운 예외를 throws 할수 없습니다.
//부모 클래스
public class Calculator {
public double areaCircle(double r) {
System.out.println("Calculator 객체의 areaCircle() 실행");
return 3.141592 * r * r;
}
}
//자식클래스
public class Computer extends Calculator {
//메소드 오버라이딩 할 클래스
@Override // 오버라이딩 할때는 이런식으로 표시합니다.
// 컴파일시 정확히 오버라이딩 되었는지 체크해줍니다. 생략가능
public double areaCircle(double r) {
System.out.println("Computer 객체의 areaCircle() 실행");
return Math.PI * r * r;
}
}
//실행부
public class ComputerExam {
public static void main(String[] args) {
int r = 10;
Calculator calculator = new Calculator(); // 부모 클래스에서 객체 생성
System.out.println("원에 대한 면적 : " + calculator.areaCircle(r));
System.out.println();
Computer computer = new Computer(); // 자식 클래스에서 객체 생성
System.out.println("원 면적 : " + computer.areaCircle(r));
// 자식 클래스에서 부모메서드인 areaCircle()이 있지만 자식클레스에서 areaCircle()에 대한 메서드를 수정했다면
// 자식 클래스에서 수정한 areaCircle()만 실행이 가능합니다. 오버라이딩 특징!
}
}
결과 :
Calculator 객체의 areaCircle() 실행
원에 대한 면적 : 314.1592
Computer 객체의 areaCircle() 실행
원 면적 : 314.1592653589793
오버라이딩의 예시
package java_practice;
// 부모클래스 : Student
public class Student {
void learn() {
System.out.println("배우기");
}
void eat() {
System.out.println("밥먹기");
}
void say() {
System.out.println("선생님 안녕하세요!"); // 보통의 학생
}
}
package java_practice;
//자식 클래스 : Leader
public class Leader extends Student{
void lead() {
}
void say() {
System.out.println("선생님께 인사"); // 오버라이딩
}
}
package java_practice;
//실행부
public class Inheritance2 {
public static void main(String[] args) {
Leader leader1 =new Leader();
leader1.eat(); // 상속 받은 메서드 사용
leader1.say(); // 오버라이딩한 메서드 사용
}
}
결과 :
밥먹기
선생님께 인사
728x90
'JAVA > Java 기초' 카테고리의 다른 글
| 추상클래스.java (0) | 2023.01.16 |
|---|---|
| 메소드 재정의.jav (0) | 2023.01.13 |
| 클래스와 인스턴스 등...(리마인드용) (0) | 2023.01.12 |
| 상속.java (1) | 2023.01.12 |
| static 이란? (0) | 2023.01.11 |