如果我聲明我的對象實現了一個接口,但未能實現這些方法,那麼當我編譯我的代碼時,會出現編譯器錯誤。 java編譯器如何知道我沒有實現接口的所有方法?java編譯器如何檢查接口中的所有方法是否都已實現?
0
A
回答
1
java編譯器如何知道我沒有實現接口的所有方法?
它知道你的類已經實現的所有方法,因爲它已經在編譯過程中找到並分析它們。
它知道所有的所有類的父類和接口中定義的,因爲這些方法:
它要麼只是編譯他們的源代碼,或加載自己的「.class」文件,和
它已經分析了接口/類並找出了需要由你的類實現哪些方法。
然後比較兩組方法。 (請注意,方法不需要完全相同,例如,實際的方法可以返回接口中方法返回類型的子類型,設置的比較需要考慮到這一點。)
(其實,這只是一個方法做這項檢查。一個實際的Java編譯器可能會做不同的檢查了一下。)
+0
這是一個很好的答案,可以完成此任務......在Java中,接口是一種抽象類型,它是一組具有定義明確且相互一致的語義的操作。 Java編譯器有一個類型檢查器,它確保程序服從該語言的類型兼容性規則。因此,類型檢查器只會檢查類是否具有方法簽名,並具有適當的返回類型,如果沒有,則返回錯誤。資料來源:http://www.cs.columbia.edu/~aho/cs4115/Lectures/15-03-23.html – kurryt
相關問題
- 1. 如何檢查方法參數是否實現多個接口
- 2. C++編譯時接口實現檢查
- 3. TypeScript - 檢查類是否實現接口
- 4. C#如何檢查一個類是否實現泛型接口?
- 5. 在Scala中實現Java接口方法
- 6. Android Studio - 如何在所有實現類中實現接口方法?
- 7. 如何檢查DataGridView中的所有行是否都不爲空?
- 8. 無法編譯實現了接口類的java類
- 9. 如何檢查接口的MethodInfo是否爲「新」方法
- 10. 檢查是否所有EditText都爲空
- 11. 是否可以調用實現某個接口的所有對象的方法?
- 12. (Java)如何使用有界通配符實現接口方法?
- 13. 是否所有的Flash SWF文件都有內置的Javascript接口方法?
- 14. 如何判斷一個類是否是java接口的實現
- 15. 如何發現子類中的方法(參數)是否在已實現的接口中定義了註釋?
- 16. PHP檢查是否實際類實現接口
- 17. 檢查類是否在ActionScript 3.0中實現特定接口
- 18. 如何檢查Perl編譯是否已經完成?
- 19. 是否有可能獲得實現接口的所有類?
- 20. Visual Studio - 自動實現接口中的所有繼承方法
- 21. 檢查所有連接的方法是否成功完成
- 22. Java中的ArrayList沒有實現Collection接口的方法?
- 23. 是否有任何c編譯器實現任何C1X功能?
- 24. Java中的編譯接口
- 25. 編譯時檢查基類是否爲「接口」
- 26. 沒有實現所有的接口方法。可能嗎?
- 27. 接口方法的實現
- 28. Java在派生類中實現接口方法的方法
- 29. 查找實現特定接口的所有Java bean
- 30. 當在Scala中使用Java接口時,編譯器抱怨方法沒有實現
它同時訪問的接口和類。爲什麼不知道? – resueman
這個問題類似於問:「編譯器如何知道字符串文字不能分配給int變量?」 – isnot2bad
@resueman我在找更深的解釋。例如,由於接口是抽象類型,因此如何完成類型檢查以及編譯器代表的接口如何執行這些檢查。 – kurryt