2014-06-16 1 views
0

아래처럼 수퍼 클래스와 서브 클래스가 있다고 해봅시다.생성자를 사용할 때의 정적 클래스와 동적 클래스

class Super { 
public void action() { 
System.out.println(“Super’s action”); 
} 
} 

class Sub extends Super() { 
public void action() { 
System.out.println(“Sub’s action”); 
} 
} 

주 방법에서는 이것을 호출합니다.

Super s1 = new Super(); 
s1.action(); 

Super s2 = new Sub(); 
s2.action(); 

Sub s3 = new Sub(); 
s3.action(); 

나는 출력 내가 생성자에서, 첫 번째 단어는 정적 클래스 유형과 (와 부품이) 동적 클래스가되는 것을 배운

Super’s action 
Sub’s action 
Sub’s action 

될 것이라는 점을 알고있다. 메소드 룩업은 동적 클래스에서 항상 시작되므로 알고 싶은 것은 s2와 s3의 차이점은 무엇입니까? 정적 클래스는 부모 유형이어야 갖는 즉, 또는 정적 클래스가 SubSuper에없는 메소드를 정의

+1

다른 방법을'Sub'에 넣고's2'와's3'에서 호출하려고하면 자신의 질문에 답할 것입니다. – awksp

+0

어떤 맥락에서? 그들은 단순히 다른 유형, 즉 컴파일 타임 (또는 정적) 유형으로 선언됩니다. –

+0

내 대답 [여기] (http://stackoverflow.com/a/24113813/391161)보십시오. – merlin2011

답변

0

경우 자신의 유형으로, 당신은 s2에서 호출 할 수 없습니다. 또한 메서드가 Sub 형식의 인수를 사용하면 s2을 전달할 수 없습니다.

관련 문제