JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:InnerClass一問? [Re:smallsheep96]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2003-08-12 21:23 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
smallsheep96 wrote:
public class InnerClasses
{
public static class StaticInnerClass
{
public void meth()
{
System.out.println("This is StaticInnerClass...");
}
}
public class InstantiateInnerClass
{
public void meth()
{
System.out.println("This is InstantiateInnerClass...");
}
}
}
這兩個InnerClass一個是類別等級一個是物件等級。
建立類別等級的InnerClass是
InnerClasses.StaticInnerClass in = new InnerClasses.StaticInnerClass();
但是在建立物件等級的InnerClass時
為何不是寫成:
InnerClasses out = new InnerClasses();
out.InstantiateInnerClass in = new out.InstantiateInnerClass;
而是要寫
InnerClasses out = new InnerClasses();
out.InstantiateInnerClass in = out. new InstantiateInnerClass;


應該是寫成
1
2
InnerClasses out = new InnerClasses();
InnerClasses.InstantiateInnerClass  in = out.new InstantiateInnerClass();


這樣子的話應該就不會搞混。ClassName.StaticMember 的語意大家都很清楚,至於上述的寫法則是不同的語意,instance inner class object 在建構時一定要與某個 outer class instance 繫結在一起(為什麼 inner class object 可以 access outer class object 的 member,如果 inner class object 建立時沒有關連到某個 outer class object,那麼在 inner class 裡出現 outer class member 的參考所言何物?)。

比較特別的反而是 InnerClasses.InstantiateInnerClass 的寫法,平常 ClassName. 接的是 static member,但在 member inner class 的用法裡顯得有點例外,好像 member inner class 是 outer class 的 static member 一般,但如果把 Outer.Inner 視為一種 type/class,而因為其定義在 Outer class 的 member 部分,於是以 Outer.Inner 來表明(類似於 package 的用法,用來表明某個 scope 裡的 class),這和 static inner class 的 qualified name 一樣用法。儘管 member inner class/static inner class 的 qualified name 的規則一樣,還是要分清楚兩者是不同的東西與之間的差別。


reply to postreply to post

給我
辣味豆腐 其餘免談
話題樹型展開
人氣 標題 作者 字數 發文時間
1939 InnerClass一問? smallsheep96 694 2003-08-12 18:46
1352 Re:InnerClass一問? 家芸 456 2003-08-12 19:43
1723 Re:InnerClass一問? Duncan 1599 2003-08-12 21:23
» JWorld@TW »  Java SE 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8