在Java中導入和擴展類有什麼區別導入和擴展一個類有什麼區別?
回答
這些是兩個完全不同的東西。
導入一個類,使它可以使用該類,而無需限定當前正在編寫的類中的全名。
import java.util.Scanner
// now you can use the Scanner class in your code like so:
Scanner stdin = new Scanner(System.in);
// instead of having to do
java.util.Scanner stdin = new java.util.Scanner(System.in);
擴展類正在創建一個新類,它是其他類的子類。這將允許您添加或更改正在擴展的類的功能。
// this is a very contrived example
public class EmptyList extends ArrayList {
@Override
public boolean add(Object o){
return false; // will not add things to a list
}
}
不會編譯,添加必須返回true或false! – 2010-08-12 13:52:05
@Tim,爲什麼不編譯?僅僅因爲缺少返回值? – jjnguy 2010-08-12 13:53:32
〜booelan也有錯字。 – 2010-08-12 14:02:42
時,在你的類,你引用類,是不是在同一個包類,則需要進口另外一個。
當你想使用oop inheritance時,你的擴展了一個類 - 即你的類具有超類的功能+無論你在類中寫什麼。
這兩件事情是非常不同的,所以也許你應該創建一些簡單的程序,併爲自己看到明顯的差異。
導入是一個可選子句,用於聲明您將在您的潛在類接口或枚舉中使用哪個類。擴展表示,她可以使用該父類的功能。
要擴展公共類,您需要首先導入它。
這幾乎是完全錯誤的。您可以在不導入的情況下擴展一個類。您可以在不導入它的情況下使用某個類,因此導入不會形成「意向聲明」。擴展在訪問權限之外有許多分支,只允許一個類訪問父級的'protected'成員,並且在任何情況下都不需要使用父級的'public'功能。 – 2010-08-12 14:08:27
@Andrzej Doyle:我們可以說不用導入關鍵字來擴展類,而是添加整個路徑。你對這個「意向聲明」是真實的。換句話說,如果我寫這樣的smtg「擴展班級公開課,你應該導入它或使用完整的路徑」,這是一個巨大的我的大腦捷徑。我碰巧;-)。 – 2010-08-12 14:27:53
導入意味着您可以以非限定的方式引用它。例如
import java.util.List;
List list = ...
而非
java.util.List list =
延伸的是完全不同的裝置,以及從類
擴展
擴展手段增強現有的功能繼承行爲和結構類。 導入
導入意味着使用一些API作爲助手到你的課堂去設計。
導入不會改變你的程序,它只是允許你寫出聲明類的簡短形式。在你自己的類中,你可以使用Java庫中任何包中的任何其他類。
假設你想使用Scanner類從鍵盤輸入數據。而不是寫作java.util.Scanner sc = new java.util.Scanner(System.in);
,你可以簡單地寫Scanner sc = new Scanner(System.in);
。
如果導入包或包後跟類名在類的頂部是進口java.util.*;
或我mport java.util.Scanner;
擴展類是不作爲進口類一樣簡單。當你擴展一個類時,你將擴展類的所有實例(字段)和方法添加到你自己的類中。換句話說,您可以訪問擴展類的所有字段和方法。
不是私人的。 (爲什麼回答這樣的舊問題,已經有一個很好的,被接受的答案?) – 2012-10-14 13:19:45
首先,進口是用於增加編譯器的效率,找到正確的類 的主要區別,採用的是進口的使用聚合(已-A)的概念&在擴展我們使用(IS-A)的關係
在has-a或import中,我們類的obj並不維護與導入類的生存關係,我們需要獲取我們想要在我們的應用程序中使用的特定類的obj ,但是在擴展我們班的obj的時候是make與父類的生活時間關係... HAPPY如果我對其他人明智地給予正確回答......
導入一個類爲我們提供了訪問其預定義的方法.we cn不要改變這些方法,但我們可以使用它們。擴展一個類意味着我們可以重寫繼承的類中定義的方法。
軟件包導入只是一種告訴類加載器在哪裏尋找類並區分具有相同名稱的類的方法。類擴展告訴JVM你的類之間的等級關係。 OO規則一旦找到類就適用。
- 1. Flask中導入和擴展有什麼區別?
- 2. 導入和擴展在java中有什麼區別?
- 3. ,繼承和擴展有什麼區別?
- 4. 有什麼區別擴展類型和類型
- 5. Selenium核心擴展和Selenium IDE擴展有什麼區別?
- 6. ISAPI擴展:TerminateExtension和擴展析構函數有什麼區別?
- 7. 擴展Activity和擴展ListActivity有什麼區別?
- 8. 繼承和類的擴展有什麼區別?
- 9. PHP imap擴展和其中一個郵件類有什麼區別?
- 10. postgres的擴展有什麼區別?
- 11. 在Groovy中擴展一個類並實現一個特性有什麼區別?
- 12. 目錄和文件沒有擴展名有什麼區別?
- 13. List <Something>和List <?有什麼區別?擴展Something>?
- 14. <?有什麼區別?擴展Object>和<E extends Object>?
- 15. magento擴展和rest api有什麼區別?
- 16. 克隆和擴展骨幹事件對象有什麼區別?
- 17. LINQ查詢表達式和擴展方法有什麼區別
- 18. 擴展和包含在Linq中有什麼區別?
- 19. Hybris中的擴展和添加Ons有什麼區別
- 20. php_pdo_pgsql和php_pgsql PHP擴展之間有什麼區別?
- 21. .db和sqlite3擴展之間有什麼區別?
- 22. 擴展和正常調用有什麼區別?
- 23. typo3擴展:exec_SELECTquery和SELECTquery有什麼區別?
- 24. php中的Mysqlnd,PDO和PDO_Mysql擴展有什麼區別?
- 25. 在Maven中,擴展和插件有什麼區別
- 26. 擴展ActiveRecord - send和extend之間有什麼區別?
- 27. 擴展方法和靜態方法有什麼區別?
- 28. 擴展javascript功能時,Number和Math函數有什麼區別?
- 29. 圖層和可擴展效果之間有什麼區別?
- 30. opencart中的擴展和模塊有什麼區別?
......還是你的意思是「實施」與「延伸」? – Stroboskop 2010-08-12 14:13:45