자바의 super 메소드 호출
글쓴이: mr.lee / 작성시간: 토, 2007/02/03 - 2:35오후
C++ 에서는 몇단계 위의 override된 super 메소드라도 골라서 부를 수 있죠. 안에서든, 밖에서든.. 이를테면
class T1 { public: virtual void prn() { cout << "T1" << endl; } }; class T2 : public T1 { public: virtual void prn() { cout << "T2" << endl; } }; class T3 : public T2 { public: virtual void prn() { cout << "T3" << endl; } };
이런 클래스 구조가 있다고 할때
T3 t3; t3.prn() t3.T2::prn(); t3.T1::prn();
이렇게 각각을 부를 수 있잖습니까? 혹은 T3의 prn()에서 다음과 같이 할 수도 있겠죠.
T2::prn(); T1::prn();
헌데 자바에서는 다중으로 override되어 있을때 super.method() 를 하면 상위의 최종 메소드 (몇단계로 override가 중첩이 되었던지) 만 불리워지는것으로 압니다.
자바에서도 원하는대로 상위의 메소드를 골라 부를 수 있는 방법이 있는지요?
또한, 외부에서 직접 그 객체의 상위 메소드를 부를 수 있는 방법이 있는지요?
만약 그럴 수 없다면 어떤 철학때문에 그렇게 설계가 되었는지요.
추가로..
Class1$Class2 obj = Class1.getObject();
뭐 대략 상기와 같이 객체를 얻어오는 라이버러리가 있습니다. 헌데 저기서 $ 가 어떤 의미인지요?
제가 생각기엔 inner class 같은데.. 테스트 코드를 inner class로 만들어 저런식으로 해보았는데 에러가 나더라구요.
Forums:
댓글 달기