java 內部類,匿名內部類
java 內部類別分為4種:
1)靜態內部類別:static修飾的類別叫做靜態類,把靜態類別放到一個類別的內部,就叫做靜態內部類別
特點:可以存取外界:靜態方法/靜態屬性,不能存取實例資源
案例:
import inner.Foo.Koo;//一定要把Koo靜態內部類別匯入
public class Demo9 {
public static void main(String[String] args) {
Koo koo = new Koo();
koo.add();
}
}
class Foo{
int a = 12;///實例
public static void show(){ System.out.println("靜態的方法");}//靜態內部類別static class Koo{public void add(){///out. .println(a); 靜態內部類別不能存取實例資源(變數)System.out.println(aa);show();//靜態內部類別可以存取外界的靜態屬性和方法}}}2)成員內部類別:在一個類別的內部,直接定義了一個不用static修飾的類別,當建立成員內部類別物件的時候,外部類別要先建立出來。 特點:成員內部類,可以訪問外界的屬性和方法案例:import inner.Foo1.Koo1;public class Demo10 {public static void main(String[] args) {/ /Koo1 koo1 = new Koo1();要建立成員內部類,則必須先建立外部類別物件Foo1 foo1 = new Foo1();//記住(筆試會考)Koo1 koo1 = foo1. new Koo1();koo1.show();}}class Foo1{int a =12;static int int 16; {System.out.println(a+" , "+aa);}}}3)局部內部類:使用非常的少,特點在一個方法內定義一個類(企業開發中及其少用)特徵:局部內部類,在引用外界的變量,該變量必須使用final修飾案例:public class Demo11 {public static void main(String[] args) { final int a = 12;final int b = 13;class Foo2{int c = 16;public int add(){
int c = 16;
public int add(){
int c = 16;public int add(){,則變數必須用final修飾
return a+b+c;
}
}
Foo2 foo2 = new Foo2();
System.out.println(foo2.addn);
}
4)匿名內部類別:對原來的類別的一個繼承
特徵:跟介面/抽象類別結合使用
eg new 類別名稱/介面名稱{
重寫方法
eg new 類別名稱/介面名稱{重寫方法案例:
public class Demo1 {
public static void main(String[] args) {
Koo koo = new Koo(){
Koo koo = new Koo(){ public// 可以重寫
return "產生了一個Koo的物件";
}
// 在匿名內部類別裡面不可以建立新的方法
// public void show(){
(){"liu");
// }
};
System.out.println(koo);
// koo.show();
}}
} 更多java 內部類,匿名內部類相關文章請關注PHP中文網!
熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

匿名內部類別可導致記憶體洩漏,問題在於它們持有外部類別的引用,從而阻止外部類別被垃圾回收。解決方法包括:1.使用弱引用,當外部類別不再被強引用持有時,垃圾回收器會立即回收弱引用物件;2.使用軟引用,垃圾回收器會在進行垃圾回收時需要記憶體時才回收軟引用物件。在實戰中,例如Android應用程式中,可以透過使用弱引用來解決因匿名內部類別引起的記憶體洩漏問題,從而在不需要監聽器時回收匿名內部類別。

匿名內部類別是Java中沒有明確名稱、透過new表達式創建的特殊內部類,主要用於實作特定介面或擴展抽象類,並在創建後立即使用。常見的匿名內部類別設計模式包括:適配器模式:將一個介面轉換為另一個介面。策略模式:定義和替換演算法。觀察者模式:註冊觀察者並處理事件。它在實際應用中非常有用,例如按字串長度排序TreeSet、建立匿名執行緒等。

匿名內部類別在Java中作為方便建立子類別、簡化程式碼和處理事件(例如按鈕點擊)的特殊內部類別。實戰案例包括:事件處理:使用匿名內部類別為按鈕新增點選事件監聽器。資料轉換:使用Collections.sort方法和匿名內部類別作為比較器對集合進行排序。

匿名內部類別的效能問題在於每次使用都會重新創建,可透過以下策略最佳化:1.將匿名內部類別儲存在局部變數中;2.使用非靜態內部類別;3.使用lambda表達式。實戰測試顯示lambda表達式最佳化效果最佳。

匿名內部類別的限制包括:無法存取外部局部變數;無法直接存取外部this引用;無法拋出checked異常;程式碼冗餘;無法序列化。

匿名內部類別可簡化多執行緒程式碼的創建,無需命名,支援即時定義和使用執行緒類別。主要優勢在於簡化程式碼,而限制是無法擴展。在需要快速建立一兩個執行緒時使用,保持程式碼簡短,如果需要更複雜的邏輯,應建立單獨的類別檔案。
