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