웹개발 교육/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