2012-03-19 6 views
0

나는 그것이라고 모르겠어요하지만 당신은 쉽게 메소드를 오버라이드 (override) 할 수 있습니다클래스 개체의 새 인스턴스를 재정의 할 수 있습니까?

Apple foo = new Apple(){ 
    public void devour(){ 
     //Devour apple 
    } 
}; 

그리고 당신은 getClass와 객체의 클래스를 얻을 수 있습니다.

이 그런 짓을 할 수 있는가 :

Apple a = new Apple(); 
Class<? extends Apple> B = a.getClass(); 
Apple c = new B(){ 
    public void polish(){ 
     //Polish apple 
    } 
}; 

사이드 참고 : 나는 특히 UIManager.getUI(component).getClass()에 의해 반환되는 컴퍼넌트의 현재의 스윙 UI 클래스에서 하나의 메소드를 오버라이드 (override) 할 때문에 나는이 질문을 부탁 해요 this code에 있습니다.

답변

4

첫 번째 코드 조각에서 devour() 메서드를 재정의 한 Apple의 익명 하위 클래스를 만들고이 익명 하위 클래스의 인스턴스로 foo을 인스턴스화합니다.

두 번째 예와 목표에서 오브젝트 참조 의 클래스/유형을 이미 오브젝트가 존재하는 후에 변경할 수 없습니다..

관련 문제