2015-04-07 35 views
1
public class Outer{ 
    public void sayHello(){ System.out.println("Hello!");} 
    public class Inner implements HelloSayers{} 
public interface HelloSayers{ 
    public void sayHello(); 
} 

Outer.Inner類型必須實現繼承的抽象方法HelloSayers.sayHello()。爲什麼內部類迫使實現其接口方法,即使外部類有它?

但問題是內部類應該被視爲外部方法的實現者。我錯了嗎?

回答

2

是的,你錯了。

Inner can accessOuter的成員,但這並不意味着它會共享這些成員。

I.e. Inner的每個實例都包含對對應的Outer對象(Outer.this)的引用。如果您在java代碼中訪問中的Outer的成員,則編譯器會將其轉換爲訪問由Inner對象引用的Outer的成員。 Inner類不包含這些成員。

相關問題