java原生態中的匿名內部類
1.匿名內部類的定義
使用匿名內部類的兩種的方法
- 建立父類,重寫父類的方法
- 實作介面的方法
2.普通類的實作
1. 普通類實作
實作普通類需要先宣告對一個類的物件,再呼叫物件的方法
建立一個example類
public void student() {
System.out.println("學生在學習");
}
宣告類,并實作對應的方法,
public static void main(String[] args) {
example example = new example();
example.student();
}
對應的輸出

2.繼承父類,重寫父類的方法
繼承上述的example類,建立example1類,重寫父類的方法
public class example1 extends example {
public void student() {
System.out.println("學生在運動");
}
}
在主類中實作其方法
public static void main(String[] args) {
example example = new example1();
example.student();
}
對應的輸出

3.普通類實作對應類的缺點
從以上兩個例子,我們會發現,當實作一個類的時候,無法重寫對應類中的方法,想要實作重寫對應類的方法就必須要繼承對應的類,重寫對應類大方法,再在主類中呼叫子類,這樣在想要實作某一次的父類方法時,就顯得太繁重,因此可以使用匿名內部類的方法去實作一個的方法
3.匿名內部類的實作
1.主類中直接使用類
使用new 對應的類
依舊使用上述的example類做例子,在主類中
public static void main(String[] args) {
new example(){
@Override
public void student() {
super.student();
}
}.student();
}
對應的輸出

2.在主類中通過介面實作匿名內部類
建立一個介面text
public interface text {
void setName(String name);
}
建立一個類example2類,在其中引入text類
public class example2 {
private int num1;
private text text;
public void setNum1(int num1) {
this.num1 = num1;
}
public void setContent(text cellback) {
text = cellback;
}
public void getresult(String name) {
if (this.num1 == 1) {
text.setName(name);
}
}
}
在主類中重寫介面
public static void main(String[] args) {
example2 example2 = new example2();
example2.setContent(new text() {
@Override
public void setName(String name) {
System.out.println(name);
}
});
example2.setNum1(1);
example2.getresult("ts");
}
對應的輸出

對應的實作程序為:在主類中設定對應num為1,觸發example2中的getresult()方法,對應的name為“ts”,而主類中呼叫了setcontent()方法,使對應的子類中的介面物件的方法重寫,對應的介面物件的setname()方法實作輸出對應的name值,呼叫getresult()方法,觸發介面的方法,輸出name的值,
4.對應的優點
通過實作匿名內部類,可以實作重寫介面的方法,在對應的子類中設定對應的觸發條件,實作介面的方法,
實作對類的方法的重寫,相較于繼承類,對類的方法重寫,使用匿名內部列更方便
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/538333.html
標籤:Java
上一篇:C++基礎
下一篇:if、else if的使用
