介面到底能不能例項化
介面到底能不能例項化
轉載:https://blog.csdn.net/MaoDunTi/article/details/47804121
先給大家看一個常用的程式碼:
tv1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
注意到OnClickListener,Ctrl +左鍵進入原始碼看到,
public interface OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
void onClick(View v);
}
我們在學習Java基礎的時候知道,介面是不可以例項化的,那為什麼上面OnClickListener可以new,這不得不讓我們問一下,到底介面能不能例項化。答案是:NO!
解釋一下,這是匿名內部類的寫法。new OnClickListener(){}其實並沒有真正地例項化,new了一個實現介面的匿名內部類,然後new得到匿名內部類的物件再向上轉型為它實現的介面(原始型別)。這樣解釋可能還不夠,再讓大家看一段程式碼:
class MyListener implements OnClickListener {
@Override
public void onClick(View v) {
}
}
tv1.setOnClickListener(new MyListener());
這樣寫大家就不會有任何的疑惑了,因為不再看到介面被例項化了錯覺。我們看到只是一種省略的寫法,它例項化了一個匿名內部類,而這個類實現了一個介面。
相關文章
- Java介面為什麼不能例項化Java
- C# Winform程式介面優化例項C#ORM優化
- python--介面自動化鑑權例項Python
- Java技術分享:Lambda表示式之介面例項化Java
- php例項化物件的例項方法PHP物件
- 例項化list
- python3+requests+unittest介面自動化例項講解Python
- Laravel kernel例項化Laravel
- 開始例項化
- Java--例項化Java
- 例項QT程式 —— Qt單例不規則介面程式QT單例
- B站到底能不能賺到錢?
- 遊戲行業到底能不能「躺平」?遊戲行業
- Grails國際化例項AI
- 網頁版微信介面呼叫例項網頁
- Jmeter介面測試例項-牛刀小試JMeter
- CouchBase C 客戶端介面呼叫例項客戶端
- 如何區分例項化網格中的每個例項
- 設計模式例項講解 - 介面隔離設計模式
- Java類初始化和例項化Java
- [Android]Gank 元件化例項AppAndroid元件化APP
- vue、react隱式例項化VueReact
- Dart - 抽象類的例項化Dart抽象
- 免費SSL證書到底能不能用呢
- JVM初探(五):類的例項化JVM
- bean例項化的三種方法Bean
- python類例項化如何實現Python
- .NET 7 的 AOT 到底能不能扛反編譯?編譯
- ORACLE-LINUX環境字元介面單例項安裝OracleLinux字元單例
- k8s透過api介面刪除例項K8SAPI
- C#動態建立介面的實現例項物件C#物件
- 類的例項化順序和分析
- css背景虛化效果程式碼例項CSS
- python中類的建立和例項化Python
- 優化 WebView 的載入速度例項優化WebView
- 資料庫正規化與例項資料庫
- 分享一個SQLite 效能優化例項SQLite優化
- python呼叫方法必須例項化麼Python