Java進階之內部類
阿新 • • 發佈:2020-08-11
Java進階之內部類
Java進階之內部類
在Java中,可以將一個類定義在另一個類或者一個方法裡面,這樣的類,叫做內部類
成員內部類
- 它定義在另一個類的內部
- 當成員內部類和外部類擁有同名的成員變數或方法,會產生隱藏現象,在內部類中,預設是訪問成員內部類中的成員,如果需要訪問外部類的同名變數或方法,需要使用(外部類.this.[成員變數/成員方法])
- 在內部類中可以無條件訪問外部類,但是,外部類訪問內部類的成員,需要建立內部類的物件,在通過物件來引用訪問
- 內部類擁有private、protected、public訪問許可權,以及包訪問許可權
區域性內部類
- 區域性內部類是定義在一個方法或者一個作用域裡面的內,他和成員內部類的區別在於,區域性內部類的訪問許可權僅限於方法內,或者該設定的作用域內
- 區域性內部類就像區域性變數一樣,不能有修飾符
匿名內部類
- 匿名內部類是唯一一種沒有構造器的類,因為沒有構造器,所以匿名內部類的範圍相當有限
- 一般來說,匿名內部類用於繼承其他類或實現介面,不需要增加格外的方法
靜態內部類
- 靜態內部類不需要外部類
- 靜態內部類在載入時,全域性只加載一次
- 比如驅動的載入
{ try{ Class.forName("com.mysql.jdbc.Driver"); }catch(ClassNotFoundException e){ e.printStackTrace(); } }
使用內部類的好處
- 每個內部類都能獨立的繼承一個介面的實現
- 方便將有一定邏輯關係的類放置在一起,同時,又對外部隱藏
- 編寫事件驅動程式,比如上邊載入mysql驅動
- 編寫執行緒程式碼
public class A { public String nameOut; public String testOut(){ InnerClass ic = new InnerClass(); ic.testInner(); return "s"; } privateclass InnerClass{ public String name; public void testInner(){ } } public static void main(String[] args) { InnerClass ic = new A().new InnerClass();//InnerClass ic.testInner(); } }