回覆列表
-
1 # 使用者3926722064098
-
2 # 使用者3926722064098
1 靜態內部類中為什麼還能有非靜態方法?被static修飾的類(內部類)怎麼還能new 物件?
類是不是靜態的和類中的方法是不是靜態的沒有絕對聯絡,類是靜態的你可以這樣用Outer.Inner,就好像使用Outer類的靜態成員的方式一樣
2 Out.Inner in = Outer.Inner in = new Outer.Inner();
你可以把Outer.Inne看作一個整體,就像C++的名稱空間一樣,現在要建立的是內部類的物件,它並不需要外部類的物件來建立,你可以把它們想象成兩個完全不同的類,其中一個在另一個內部而已。
Out.Inner in = new Outer().new Inner();
這麼寫new Outer()是一個物件,物件.new是什麼意思呢?
3訪問一個類中的方法應該這樣 new 類().function(); 而題目中的new outer.inner().function();根本就沒有外部類例項
new outer.inner()已經建立了一個內部類的物件,然後呼叫內部類物件的function(),呼叫內部類的function(),並不需要外部類的物件
1 靜態內部類中為什麼還能有非靜態方法?被static修飾的類(內部類)怎麼還能new 物件?
類是不是靜態的和類中的方法是不是靜態的沒有絕對聯絡,類是靜態的你可以這樣用Outer.Inner,就好像使用Outer類的靜態成員的方式一樣
2 Out.Inner in = Outer.Inner in = new Outer.Inner();
你可以把Outer.Inne看作一個整體,就像C++的名稱空間一樣,現在要建立的是內部類的物件,它並不需要外部類的物件來建立,你可以把它們想象成兩個完全不同的類,其中一個在另一個內部而已。
Out.Inner in = new Outer().new Inner();
這麼寫new Outer()是一個物件,物件.new是什麼意思呢?
3訪問一個類中的方法應該這樣 new 類().function(); 而題目中的new outer.inner().function();根本就沒有外部類例項
new outer.inner()已經建立了一個內部類的物件,然後呼叫內部類物件的function(),呼叫內部類的function(),並不需要外部類的物件