W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
靜態(tài)成員類不是內(nèi)部類
在另一個類的主體中定義的成員類可以聲明為靜態(tài)。
以下代碼聲明了頂級類A和靜態(tài)成員類B:
class A { // Static member class public static class B { // Body for class B goes here } }
靜態(tài)成員類不是內(nèi)部類。它被認(rèn)為是一個頂級類。
靜態(tài)成員類也稱為嵌套頂級類。
A類的實(shí)例和B類的實(shí)例可以獨(dú)立存在,因?yàn)樗鼈兌际琼敿夘悺?/p>
靜態(tài)成員類可以聲明為public,protected,package-level或private,以限制其在其封閉類之外的可訪問性。
使用靜態(tài)成員類有兩個好處:
靜態(tài)成員類是其封閉頂級類的直接成員,而不是包的成員。
靜態(tài)成員類的對象的創(chuàng)建方式與使用new運(yùn)算符創(chuàng)建頂級類的對象的方式相同。要創(chuàng)建一個B類的對象,你寫
A.B bReference = new A.B();
由于類B的簡單名稱在類A中的范圍內(nèi),因此我們可以使用其簡單名稱在類A中創(chuàng)建其對象
B bReference2 = new B(); // This statement appears inside class A code
我們還可以通過導(dǎo)入com.java2s.innerclasses.A.B類,使用A類之外的簡單名稱B.
下面的代碼顯示了如何使用靜態(tài)內(nèi)部類。
public class Main { public static void main(String[] args) { Car.Tire m = new Car.Tire(17); Car.Tire m2 = new Car.Tire(19); Car.Keyboard k = new Car.Keyboard(122); Car.Keyboard k1 = new Car.Keyboard(142); System.out.println(m); System.out.println(m2); System.out.println(k); System.out.println(k1); } } class Car { // Static member class - Monitor public static class Tire { private int size; public Tire(int size) { this.size = size; } public String toString() { return "Monitor - Size:" + this.size + " inch"; } } // Static member class - Keyboard public static class Keyboard { private int keys; public Keyboard(int keys) { this.keys = keys; } public String toString() { return "Keyboard - Keys:" + this.keys; } } }
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: