java內部靜態類和非靜態類,和他們在外部的定義

2021-08-30 14:32:27 字數 900 閱讀 8849

介面:

宣告在介面中的屬性自動成為public static final

宣告在介面中的方法自動成為public

宣告在介面中的類自動成為public static

如果你不需要內部類物件與其外圍類物件之間有聯絡,那你可以將內部類宣告為static。這通常稱為巢狀類(nested class)。想要理解static應用於內部類時的含義,你就必須記住,普通的內部類物件隱含地儲存了乙個引用,指向建立它的外圍類物件。然而,當內部類是static的時,就不是這樣了。巢狀類意味著:   

1. 要建立巢狀類的物件,並不需要其外圍類的物件。   

2. 不能從巢狀類的物件中訪問非靜態的外圍類物件。   

public class z1    

public void outer_f2()    

// 靜態內部類可以用public,protected,private修飾   

// 靜態內部類中可以定義靜態或者非靜態的成員   

static class inner    

void inner_f2()    

}   

class innerz    

}   

public void outer_f3()    

public static void main(string args)    

}生成乙個靜態內部類不需要外部類成員:這是靜態內部類和成員內部類的區別。靜態內部類的物件可以直接生成:outer.inner in = new outer.inner();而不需要通過生成外部類物件來生成。這樣實際上使靜態內部類成為了乙個頂級類(正常情況下,你不能在介面內部放置任何**,但巢狀類可以作為介面的一部分,因為它是static 的。只是將巢狀類置於介面的命名空間內,這並不違反介面的規則)

靜態類 和 非靜態類的區別

1 不能在靜態類中宣告例項成員 變數和方法 2 非靜態類中可以呼叫靜態類中的成員和方法 3 呼叫靜態類中的成員或方法時不需要例項化 4 非靜態類中可以宣告靜態成員或靜態方法 5 靜態方法的使用效率比非靜態方法的使用效率高 6 靜態方法與靜態成員變數一樣,屬於類本身,在類裝載的時候被裝載到記憶體,不自...

java之靜態內部類 非靜態類內部類的建立

package test public class testclass package test import test.testclass.inner 請注意這裡,一定一定要匯入內部類檔案,不然 1 會報錯 public class implements 結果 1package test publ...

靜態類和非靜態類的主要區別

靜態類和非靜態類的主要區別 主要區別在於靜態類不能例項化,靜態類編譯器能夠執行檢查確保不是偶然的新增例項成員,c 編譯器會自動把它標記為sealed,靜態類中不能建立非靜態的方法,即靜態方法中只能建立靜態方法,但在非靜態類中可以呼叫靜態方法。靜態類的主要特性 1 僅包含靜態成員。2 無法例項化。3 ...