java 區域性內部類

2021-06-23 06:05:16 字數 1502 閱讀 1420

區域性內部類

學習方法:

區域性內部類分為方法內部類和作用域內部類,方法內部類就是直接定義在方法中的內部類,作用域內部類是定義在某個作用域內的內部類,比如if結構中,while結構中等等。方法內部類的作用域在整個方法內,作用域內部類的作用域只在內部類所在的作用域當中,比如在if中,在while中。作用域內部類除了作用域與方法內部類有區別外,沒有其他區別。下面我們一起來看一下方法內部類。

方法內部類,顧名思義,就是把類放在方法內。

class outer }}

} a、方法內部類只能在定義該內部類的方法內例項化,不可以在此方法外對其實例化。

b、方法內部類物件不能使用該內部類所在方法的非final區域性變數。

因為方法的區域性變數位於棧上,只存在於該方法的生命期內。當乙個方法結束,其棧結構被刪除,區域性變數成為歷史。但是該方法結束之後,在方法內建立的內部類物件可能仍然存在於堆中!例如,如果對它的引用被傳遞到其他某些**,並儲存在乙個成員變數內。正因為不能保證區域性變數的存活期和方法內部類物件的一樣長,所以內部類物件不能使用它們。

下面是完整的例子:

class outer

}inner in = new inner();

in.seeouter();

}public static void main(string args) }

c、方法內部類的修飾符。

與成員內部類不同,方法內部類更像乙個區域性變數。

可以用於修飾方法內部類的只有final和abstract。

d、靜態方法內的方法內部類。

靜態方法是沒有this引用的,因此在靜態方法內的內部類遭受同樣的待遇,即:只能訪問外部類的靜態成員。

public inte***ce destination

public class goods1

string readlabel()

}return new gdestination(s);

}public static void main(string args)

}上面就是這樣乙個例子。在方法dest()中我們定義了乙個內部類,最後由這個方法返回這個內部類的物件。如果我們在用乙個內部類的時候僅需要建立它的乙個物件並創給外部,就可以這樣做。當然,定義在方法中的內部類可以使設計多樣化,用途絕不僅僅在這一點。

下面有乙個作用域內部類的例子:

public class goods2

string getslip()

}trackingslip ts = new trackingslip("slip");

string s = ts.getslip();}}

public void track()

public static void main(string args)

}你不能在if之外建立這個內部類的物件,因為這已經超出了它的作用域。不過在編譯的時候,內部類trackingslip和其他類一樣同時被編譯,只不過它由它自己的作用域,超出了這個範圍就無效,除此之外它和方法內部類並沒有區別。

java內部類 this,, new 區域性內部類

package equality public class dothis public class inner public inner inner public static void main string args 在這裡插入描述 public class programmain innerc...

Java中,區域性內部類

區域性內部類 a 區域性內部類可以直接訪問外部類的成員。b 區域性內部類在區域性位置可以建立內部類物件,通過內部類物件呼叫內部類方法,來使用區域性內部類功能。c 區域性內部類訪問區域性變數,區域性變數必須加final修飾。為什麼呢?因為區域性變數會隨著方法的呼叫完畢而消失,這個時候,區域性物件並沒有...

Java內部類 區域性 匿名 成員 靜態內部類

我們所說的內部類,官方的叫法是巢狀類 nested classes 巢狀類包括靜態內部類 static nested classes 和內部類 inner classes 而內部類分為成員內部類,區域性內部類 local classes 和匿名內部類 anonymous classes 內部類是乙個...