Backend/JAVA
[JAVA] override
howdyoon
2023. 3. 20. 23:54

조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것
상속받은 메서드를 그대로 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야 하는 경우가 많다.
이럴 때 조상의 메서드를 오버라이딩 한다.
조상 클래스의 메서드를 자손 클래스에서 오버라이딩 할 때
1) 선언부가 조상 클래스의 메서드와 일치해야한다.
2) 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
3) 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
package oop0317;
public class Test06_override {
public static void main(String[] args) {
//Method Override 함수 재정의
//->상속관계에서 물려받은 메소드를 다시 수정(리폼)
//Korea클래스 생성 후 실습
//1)오버라이드 하기 전
Seoul se=new Seoul();
se.view();
se.disp();
//2)오버라이드 한 후
Busan bu=new Busan();
bu.view();//final메소드는 상속은 가능하지만 오버라이드는 할 수 없다
bu.disp();
}//main() end
}//class end
[ Korea 클래스]
package oop0317;
class Korea {
String name="대한민국";
final void view() {
System.out.println("Korea.view()...");
}//view() end
void disp() {
System.out.println("Korea.disp()..." + name);
}//disp() end
}//class end
class Seoul extends Korea {}//class end
class Busan extends Korea {
String name="부산광역시";
@Override //<-annotation
void disp() {
System.out.println("Busan.disp()..." + name);
}//disp() end
/*
@Override
void view() {} 에러. final메소드는 더이상 오버라이드 할 수 없다
*/
}//class end