5
以下程序使用名爲Anonymous
的內部類,該類本身擴展其封閉類Main
。Java中扭曲的內部類
package name;
public class Main
{
private final String name;
Main(String name)
{
this.name = name;
}
private String name()
{
return name;
}
private void reproduce()
{
new Anonymous().printName();
}
private class Anonymous extends Main
{
public Anonymous()
{
super("reproduce");
}
public void printName()
{
System.out.println(name());
}
}
public static void main(String[] args)
{
new Main("main").reproduce();
}
}
在main()方法的唯一語句調用外部類Main
的構造供給串主和剛則方法reproduce()
被調用。
的reproduce method
包含調用Anonymous
類對象上的printName()
方法語句new Anonymous().printName();
。構造函數正在提供一個新的字符串將重現爲其封閉的超類Main
。
因此,System.out.println(name());
應顯示該字符串的printName
方法中的語句再現而非主但它總是顯示字符串主。爲什麼這樣?
+1斑點。 – skaffman