Java 靜態(tài)對象類

2018-01-18 18:17 更新

Java面向?qū)ο笤O(shè)計(jì) - Java靜態(tài)內(nèi)部類


靜態(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)成員,包括私有靜態(tài)成員。
  • 一個包通過提供一個命名空間,就像一個頂級類的容器。具有靜態(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.

例2

下面的代碼顯示了如何使用靜態(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é)果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號