一、局部內部類使用場景
局部內部類指的是,定義在方法內的類。這種類的應用場景一般是需要使用某個介面或者抽象類的實現,但是這個實現在其他地方用不到,所以定義為局部內部類。以下是一個示例:
public class OuterClass{
int a = 10;
public void test(){
class InnerClass{
public void doSomething(){
System.out.println("我是局部內部類,我的值為:" + a);
}
}
InnerClass inner = new InnerClass();
inner.doSomething();
}
}
這裡我們定義了一個名為OuterClass的外部類,這個類中包含了一個名為test()的方法,這個方法中定義了一個局部內部類InnerClass,並在方法內使用了這個類。在doSomething()方法中我們可以訪問外部類的變數a。
二、匿名內部類使用場景
匿名內部類使用場景一般是需要使用某個介面或者抽象類的實現,但是這個實現不需要起名字,只需要重寫介面或者抽象類的方法即可。以下是一個示例:
interface InnerInterface{
public void doSomething();
}
public class OuterClass{
public void test(){
InnerInterface inner = new InnerInterface(){
public void doSomething(){
System.out.println("我是匿名內部類,我在幹些事情...");
}
};
inner.doSomething();
}
}
這裡我們定義了一個名為InnerInterface的介面,這個介面中定義了一個方法doSomething()。在OuterClass類中使用了匿名內部類來實現這個介面,並在test()方法中使用這個實現。
三、成員內部類使用場景
成員內部類是指定義在外部類中的類,可以直接用外部類的實例 new 出來。通常用於外部類和內部類之間需要較多信息傳遞的情況。以下是一個示例:
public class OuterClass{
int a = 10;
class InnerClass{
public void doSomething(){
System.out.println("我是成員內部類,我的值為:" + a);
}
}
public void test(){
InnerClass inner = new InnerClass();
inner.doSomething();
}
}
這裡我們定義了一個名為OuterClass的外部類,在這個類中我們定義了一個成員內部類InnerClass,它可以訪問外部類的變數a。在test()方法中我們使用了這個內部類。
四、靜態內部類使用場景
靜態內部類是指用 static 修飾的內部類,可以不依賴外部類實例直接創建內部類。一般用於內部類不需要依賴外部類的實例信息的情況。以下是一個示例:
public class OuterClass{
int a = 10;
static class InnerClass{
public void doSomething(){
System.out.println("我是靜態內部類");
}
}
public void test(){
InnerClass inner = new InnerClass();
inner.doSomething();
}
}
這裡我們定義了一個名為OuterClass的外部類,在這個類中我們定義了一個靜態內部類InnerClass,它可以不依賴於外部類實例直接使用。在test()方法中我們使用了這個內部類。
五、總結
Java內部類的使用場景多種多樣,可以根據實際需求進行選擇。局部內部類適合在某個方法內部使用,而匿名內部類適合需要動態創建某個類的實現,並只需要使用一次的情況,成員內部類適合外部類和內部類之間需要較多信息傳遞的情況,而靜態內部類適合不依賴於外部類信息的情況。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286891.html