我创建了这个测试问题,看看很多关于内部类的OCPJP问题是如何有目的的名称冲突的。问题:我将如何创建具有id = 1的A类的实例。
class A{ int id = 1; }
class Bag {
static class A{ int id = 2; }
}
public class InnerClasses
{
static class A{ int id = 3; }
public static void main(String[] args)
{
A A1 = new A();
Bag.A A2 = new Bag.A();
A A3 = new A();
System.out.println(A1.id); //prints 3
System.out.println(A2.id); //prints 2
System.out.println(A3.id); //prints 3
}
}发布于 2014-10-03 12:40:07
您可以在一个名为A的单独java文件中定义A类,并通过使用完整的包名调用构造函数来实例化它。如下所示:
com.mypackage.A A1 = new com.mypackage.A();
Bag.A A2 = new Bag.A();
A A3 = new A();
System.out.println(A1.id); //prints 1
System.out.println(A2.id); //prints 2
System.out.println(A3.id); //prints 3尽管定义具有相同名称的内部类的意义只是为了覆盖另一个类的定义。所以这有点超越了重点..。
https://stackoverflow.com/questions/26178918
复制相似问题