課程
/后端開發
/Java
/Java入門第二季 升級版
導入一個包中的全部文件時應該怎么處理! 為什么我的程序運行不了呢
2015-08-12
源自:Java入門第二季 升級版 7-2
正在回答
你本身包下就有個同名的Telphone類,有歧義,所以程序不知道是實例化哪個。
你要實例化HelloTelphone2包下的Telphone的話,直接指定全路徑。
Telphone?test =?new??com.HelloTelphone2.Telphone();
永遠的藍天
我之前沒有導入整個包,只導入了Telephone文件,沒有問題。
然后我嘗試了你的方法,結果也不行,但是并沒有報錯,只是調用的是本包的類而不是導入的包的類
參考了《Java編程語言》(第三版)Arnold,Gosling,Holmes 著 第264頁到265頁的內容
improt attr*;
使用*號導入語句叫做“按需導入”(import on demand)聲明。也可以采用單一類型導入(single type import):
import attr.Attrinbuted;
……
import 機制是一種被動機制,因為關于有名包的信息和類型信息并不是在編譯時被讀入加載的——直到包中的某個類型被使用時才讀入這些信息,import語句只是簡單的告訴編譯器,當他在本地找不到定義的類型時,它應該如何確定類型的完全限定名?!幾g器會按下面的順序查找該類型:
包括子類型的當前類型
當前類型中的嵌套類型
顯式命名的導入類型(單類型導入)。
在同一個包內聲明的其他類型。
隱式命名的導入類型(按需導入)。
我前后用的兩種方法的優先順序分別是3和5,而在同一個包中還聲明了Telephone,它在4。所以,當單類型導入的時候可以而按需導入的時候不行。我想這應該是為什么出錯的原因
package?imooc; //import?imooc.second.TelePhone; import?imooc.second.*; public?class?mainPhone?{ public?static?void?main(String[]?args){ //TelePhone?phone1?=?new?TelePhone(); TelePhone?phone1?=?new?imooc.TelePhone(); phone1.getPhone(); TelePhone?phone2?=?new?imooc.second.TelePhone(); phone2.getPhone(); SmartPhone?sPhone?=?new?SmartPhone(); sPhone.getSmartPhone(); } }
package?imooc.second; public?class?TelePhone?{ public?void?getPhone(){ System.out.println("imooc.second.telephone?running?!"); } }
package?imooc; public?class?TelePhone?{ public?void?getPhone(){ System.out.println("imooc.Telephone?running?!"); } }
導入import com.HelloTelphone2.*;包中的全部文件了,然后Telphone?test=new Telphone();不就應該是導入的包的Telphone()了嘛?為什么不對呢!
桑桑2333
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
1 回答這個程序是怎么運行的
3 回答當導入兩個包 兩個包有同樣命名的方法時候怎么執行呢?
2 回答//下面部分有什么作用,或者說這個程序是怎么運行的
5 回答我在eclipse編寫java程序,為什么運行結果是之前一個程序的結果?
4 回答為什么運行不了呢
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-08-12
你本身包下就有個同名的Telphone類,有歧義,所以程序不知道是實例化哪個。
你要實例化HelloTelphone2包下的Telphone的話,直接指定全路徑。
Telphone?test =?new??com.HelloTelphone2.Telphone();
2015-10-02
我之前沒有導入整個包,只導入了Telephone文件,沒有問題。
然后我嘗試了你的方法,結果也不行,但是并沒有報錯,只是調用的是本包的類而不是導入的包的類
參考了《Java編程語言》(第三版)Arnold,Gosling,Holmes 著 第264頁到265頁的內容
improt attr*;
使用*號導入語句叫做“按需導入”(import on demand)聲明。也可以采用單一類型導入(single type import):
import attr.Attrinbuted;
……
import 機制是一種被動機制,因為關于有名包的信息和類型信息并不是在編譯時被讀入加載的——直到包中的某個類型被使用時才讀入這些信息,import語句只是簡單的告訴編譯器,當他在本地找不到定義的類型時,它應該如何確定類型的完全限定名?!幾g器會按下面的順序查找該類型:
包括子類型的當前類型
當前類型中的嵌套類型
顯式命名的導入類型(單類型導入)。
在同一個包內聲明的其他類型。
隱式命名的導入類型(按需導入)。
我前后用的兩種方法的優先順序分別是3和5,而在同一個包中還聲明了Telephone,它在4。所以,當單類型導入的時候可以而按需導入的時候不行。我想這應該是為什么出錯的原因
2015-09-12
2015-08-12
導入import com.HelloTelphone2.*;包中的全部文件了,然后Telphone?test=new Telphone();不就應該是導入的包的Telphone()了嘛?為什么不對呢!