91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java的內部類怎么用

發布時間:2020-06-24 09:13:28 來源:億速云 閱讀:193 作者:Leah 欄目:編程語言

Java的內部類怎么用?針對這個問題,這篇文章給出了相對應的分析和解答,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

根據定義的方式不同,內部類分為靜態內部類、成員內部類、局部內部類、匿名內部類四種。

1.靜態內部類

定義在類內部的靜態類,就是靜態內部類。

public class Out {
     private static int a;
     private int b;
     public static class Inner {
         public void print() {
             System.out.println(a);
         }
     }
}

1)靜態內部類可以訪問外部類所有的靜態變量和方法,即使是private的也一樣。

2)靜態內部類和一般類一致,可以定義靜態變量、方法、構造方法等。

3)其他類使用靜態內部類需要使用“外部類.靜態內部類”方式。如下所示:Out.Inner inner = new Out.Inner();  inner.print();

4)Java集合類HashMap內部就有一個靜態內部類Entry。Entry是HashMap存放元素的抽象,HashMap內部維護Entry數組用來存放元素,但是Entry對使用者是透明的。像這種和外部類關系密切的,且不依賴外部類實例的,都可以使用靜態內部類。

2.成員內部類

定義在類內部的非靜態類,就是成員內部類。成員內部類不能定義靜態方法和變量(final修飾的除外)。這是因為成員內部類是非靜態的,類初始化的時候先初始化靜態成員,如果允許成員內部類定義靜態變量,那么成員內部類的靜態變量初始化順序是有歧義的。

public class Out {
     private static int a;
     private int b;
     public class Inner {
         public void print() {
             System.out.println(a);
             System.out.println(b);
         }
     }
}

3.局部內部類(定義在方法中的類)

定義在方法中的類,就是局部類。如果一個類只在某個方法中使用,則可以考慮使用局部類。

public class Out {
     private static int a;
     private int b;
     public void test(final int c) {
         final int d = 1;
         class Inner {
             public void print() {
                 System.out.println(c);
             }
         }
     }
}

4.匿名內部類(要繼承一個父類或實現一個接口、直接使用new來生成一個對象的引用)

匿名內部類,我們必須要繼承一個父類或實現一個接口,當然也僅能只繼承一個父類或實現一個接口。同時它也是沒有class關鍵字,這是因為匿名內部類是直接使用new來生成一個對象的引用。

1)匿名內部類僅能被使用一次,創建匿名內部類時,它會立即創建一個該類的實例,該類的定義會立即消失,所以匿名內部類時不能夠被重復使用的。

2)匿名內部類不能定義構造函數,不能存在任何的靜態成員變量和靜態方法。

3)匿名內部類中的方法不能是抽象的,它必須要實現接口或繼承父類的所有抽象方法。

4)匿名內部類訪問的外部類成員變量或成員方法必須用static修飾,內部類可以訪問外部類私有變量和方法。

public abstract class Bird {
     private String name;
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public abstract int fly();
}
public class Test {
     public void test(Bird bird){
         System.out.println(bird.getName() + "能夠飛 " + bird.fly() + "米");
     }
     public static void main(String[] args) {
         Test test = new Test();
         test.test(new Bird() {
             public int fly() {
                 return 10000;
             }
             public String getName() {
                 return "大雁";
             }
         });
         }
}

關于Java的內部類的簡單使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

琼结县| 通河县| 泽州县| 大同市| 三明市| 长子县| 五家渠市| 囊谦县| 汝城县| 青岛市| 虹口区| 酉阳| 平舆县| 荔波县| 绍兴县| 绥阳县| 扶余县| 乌拉特前旗| 吕梁市| 衡山县| 奇台县| 香港| 博兴县| 犍为县| 孟村| 油尖旺区| 成安县| 沁水县| 大化| 武鸣县| 南江县| 临高县| 石棉县| 洪湖市| 周宁县| 含山县| 凌源市| 三原县| 琼中| 怀安县| 肇庆市|