웹개발 교육/Java
[34일] Java (32) - override
ewok
2022. 9. 14. 12:12
부모 클래스의 모든 메소드가 자식 클래스에서도 사용하기 적합한 것이 이상적이지만 어떤 메소드는 자식 클래스에서 사용하기 적합하지 않을 수 있다.
이 경우 상속된 일부 메소드는 자식 클래스에서 수정하여 사용해야 한다. 이를 메소드 재정의(overriding)라고 한다.
package oop0914;
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 메소드는 더 이상 override 할 수 없다
*/
}//class end
Busan 클래스에서 Korea 클래스로부터 상속받은 disp()를 오버라이딩 했다. view()의 경우에는 final이기 때문에 오버라이딩을 할 수 없다.
public class Test04_override {
public static void main(String[] args) {
// Method Override 함수 재정의
//-> 상속 관계에서 물려받은 메소드를 다시 수정(리폼)
//1) 오버라이드 하기 전
Seoul se = new Seoul();
se.disp();
se.view();
//2) 오버라이드 한 후
Busan bu = new Busan();
bu.disp();
bu.view(); //final 메소드는 상속은 가능하지만 오버라이드는 할 수 없다
}//main() end
}//class end
