2014-10-03 42 views
0

我創建了這個測試問題,看看有很多關於內部類的OCPJP問題看起來像是有目的的名稱衝突。問:那我要如何創建具有ID A類的實例= 1java:嵌套類定義 - 名稱是否相沖突? (OCPJP)

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 
    } 
} 

回答

1

你在一個名爲單獨的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 

儘管定義一個具有相同名稱的內部類的要點只是爲了重寫另一個類的定義。所以它有點勝過...