Saturday, October 16, 2004

 

[轉錄]inner class

解釋何謂inner class及基本用法
轉錄自swanky所整理的java版精華區

隱含在其他類別內的類別定義。
內部類別的功能只會存在於所有類別內的語意範圍(lexical scope) 之內。

Inner class (內部類別) 又稱為 Nested class (巢狀類別)

是從 JAVA 1.1 開始有的語法

它的種類主要有三種:

1. member inner class:宣告在 class 內部的inner class

ex. class a {
       class b{
       }
    }

2. local inner class:宣告在method中的inner class,
                      只能存取 final 的 local variable 和 class member

ex. class a {       
 public void method () {
          class b { }
       }
    }

3. anonymous inner class:匿名的 inner class

ex. JButtonObject.addActionListener(
       new ActionListener() { //沒有名字
              public void actionPerformed(ActionEvent e) {}
       }
    );


另外有一種叫 static nested inner class,不過其特性就和普通的 top-level static
class是一樣的。
inner class一旦加上了 static 就被視為是top-level,因此一般在討論 inner class的
種類時,很少提到,你只要記住無論放在哪裡,static inner class 就是 outer class
(就是宣告在最外面,最一般的class)
如果想要更深入了解
請參考下面文章
http://www.javaworld.com.tw/jute/post/view?bid=29&id=9553
由 shumi 發表於 June 25, 2004 12:45 AM | 引用
反向連結
迴響

Java 這個公司搞一個 JAVA 5 出來,回頭看一下他的技術用語
Java 稱 nested classes 為所謂的 static inner classes


Inner class (內部類別) ≠ Nested class (巢狀類別)

可是有誰真的會這樣做區分?
不還是要正名一下~

不知道我是否有誤解

Posted by: jocosn 發表於 2004-10-13 05:01 PM

真的是這樣嗎? @.@
我以為inner class = nested class
至少我看過的書上沒有特別去區分兩者

Posted by: swanky 發表於 2004-10-13 10:17 PM

http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html
a nested class can be declared static (or not). A static nested class is called just that: a static nested class.
A nonstatic nested class is called an inner class...
這應該只有 Sun 陽光男孩才會這樣叫,就像 Java 5
我看以後Java 2.5 版要叫 Java 二百五。二百五真是棒~

Posted by: jocosn 發表於 2004-10-14 07:59 PM

我想他是想把普通的inner class與static inner class作個區分吧
所以我覺得還是可以用nested class來取代inner class囉~

inner class != static inner class
nested class != static nested class

Posted by: swanky 發表於 2004-10-16 12:02 AM