Java
[Java] MethodOverriding
98kg
2024. 2. 20. 14:55
오버라이딩이란?
부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것.
오버라이딩의 조건
오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다.
예시로 카메라 클래스와 카메라 클래스에 메서드를 오버라이딩할 카메라로 예시를 들겠습니다.
설명들은 주석으로 달겠습니다.
package Chapter_07.Camera;
public class Camera { // 부모 클래스
public String name;
public Camera() {
this("카메라");
}
protected Camera(String name) {
this.name = name;
}
public void takePicture(){
// 사진 촬영
System.out.println(this.name+ " : 사진을 촬영합니다.");
}
public void recordVideo(){
// 동영상 촬영
System.out.println(this.name + " : 동영상을 녹화합니다.");
}
public void showMainFeature(){
System.out.println(this.name + "의 주요 기능 : 사진 촬영, 동영상 녹화");
}
}
package Chapter_07.Camera;
public class FactoryCam extends Camera { //자식 클래스
public FactoryCam() {
// this.name = "공장 카메라";
super("공장 카메라"); // 부모 클래스 생성자에 바로 접근
}
public void recordVideo() {
super.recordVideo(); // ->부모클래스에 있는 메소드 출력후 추가로 자식클래스에 있는 정의된 메소드를 추가 출력 (오버라이딩 아님)
detectFire();
}
public void detectFire(){
System.out.println(this.name + " : 화재를 감지합니다.");
}
public void showMainFeature(){
System.out.println(this.name + "의 주요 기능 : 화재 감지");
}
}
실행코드
package Chapter_07;
import Chapter_07.Camera.Camera;
import Chapter_07.Camera.FactoryCam;
import Chapter_07.Camera.SpeedCam;
public class _13_MethodOverriding {
public static void main(String[] args) {
// 메소드 오버라이딩 : 자식 클래스에서 부모 클래스의 메소드를 덮어쓰기( 재정의 )
Camera camera = new Camera();
FactoryCam factoryCam =new FactoryCam();
camera.showMainFeature();
factoryCam.showMainFeature();
}
}
실행결과