轉發:
http://www.java265.com/JavaCourse/202204/3129.html
下文筆者講述Java內部類的簡介說明,如下所示:
內部類的簡介
我們將在其他類中的類稱之為“內部類”
內部類的定義位置:
定義在類中方法外的類
成員內部類可以使用不同的修飾關鍵字進行修飾,不同的修飾關鍵字會生成不同的訪問方式
內部類的定義方法
class 外部類 { // 外部類的成員位置 class 內部類{ // 內部類的成員位置 } }
例:內部類定義
class Person { //外部類 String name; class Heart { //內部類 // 成員 } }
創建內部類物件的方法
外部類 外部類物件名 = new 外部類(); 外部類.內部類 內部類物件名 = 外部類物件名.new 內部類(); 簡寫方式: 外部類名.內部類名 物件名 = new 外部型別().new 內部型別();
//外部類 class Outer { // 外部類成員變數 private String outer_filed = "我是外部類成員變數"; //成員內部類 class Inner { // 內部類成員變數 private String inner_filed = "我是內部類成員變數"; //內部類的成員方法 public void inner_method() { System.out.println("inner_method....run... " + inner_filed ); } } // 外部類成員方法 public void outer_method(){ System.out.println("outer_method....run... " + outer_filed ); } } // 測驗類 public class InnerDemo { public static void main(String[] args) { // 創建外部類物件 Outer o = new Outer(); // 創建內部類物件 Outer.Inner i = p.new Inner();//表示通過外部類物件創建內部類物件 // 呼叫外部類方法 i.outer_method(); // 呼叫內部類方法 i.inner_method(); } }
注意事項:
內部類是一個獨立的類
編譯之后的內部類會被編譯成獨立的.class檔案,類的名稱會使用“類名和$符號”組成
例:Outer$Inner.class
注意事項:
1.當一個內部類被私有化后,這個內部類就無法在外部進行訪問
2.私有成員的內部類也是外部類的成員
3.外部類可以訪問私有成員方法,本類之外無法訪問
4.私有成員內部類,只能在外部類中其他成員方法中創建成員內部類物件,通過物件的方法訪問"私有成員內部類"的成員
//外部類 class Outer { // 外部類成員變數 private String outer_filed = "我是外部類成員變數"; //被私有的成員內部類 private class Inner { // 內部類成員變數 private String inner_filed = "我是內部類成員變數"; //內部類的成員方法 public void inner_method() { System.out.println("inner_method....run... " + inner_filed ); } } // 外部類成員方法 public void outer_method(){ System.out.println("outer_method....run... " + outer_filed ); } /* 被私有的外部類成員方法: 當前外部類的成員方法被私有了,因此此方法外界無法訪問,但是本類中是可以正常訪問的, 我們可以在本類中定義一個公開的方法來呼叫私有的方法,然后創建物件呼叫公開的方法即可訪問, */ // 外部類公開的方法 public void pub_method(){ // 此公開方法可以訪問本類私有的成員 Inner inner = new Inner(); inner.inner_method(); // 可以在此方法內訪問創建私有內部類的物件,然后呼叫內部類方法,最后通過外部類物件呼叫此 // 方法即可完成私有成員內部類方法的間接呼叫 } } // 測驗類 public class InnerDemo { public static void main(String[] args) { // 創建外部類物件 Outer o = new Outer(); // 呼叫外部類訪問私有內部類的公開方法 , 間接呼叫私有成員內部類 o.pub_method(); } }
被靜態的成員內部類
外部類.內部類 變數名 = new 外部類.內部類();
//外部類 class Outer { // 外部類成員變數 private String outer_filed = "我是外部類成員變數"; //被靜態的成員內部類 static class Inner { // 內部類成員變數 private String inner_filed = "我是內部類成員變數"; //內部類的成員方法 public void inner_method() { System.out.println("inner_method....run... " + inner_filed ); } } // 外部類成員方法 public void outer_method(){ System.out.println("outer_method....run... " + outer_filed ); } } // 測驗類 public class InnerDemo { public static void main(String[] args) { // 創建內部類物件 Outer.Inner oi = new Outer.Inner(); // 呼叫內部類方法 oi.inner_method(); } }
靜態成員內部類的靜態方法
//外部類 class Outer { // 外部類成員變數 private String outer_filed = "我是外部類成員變數"; //被靜態的成員內部類 static class Inner { // 內部類成員變數 private String inner_filed = "我是內部類成員變數"; //內部類的成員方法 public static void static_inner_method() { System.out.println("靜態內部類的靜態成員方法static_inner_method....run... " ); } } } // 測驗類 public class InnerDemo { public static void main(String[] args) { // 直接使用內部類名訪問 Outer.Inner.static_inner_method(); } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/481138.html
標籤:Java
上一篇:golang tcp keepalive研究記錄(基于websocket)
下一篇:返回列表