註冊 | 登入 | 全文檢索 | 排行榜 |
![]() |
» JWorld@TW
» Java 新手區
![]() ![]() |
![]() ![]() ![]() ![]() |
本主題所含的標籤 |
作者 | Re:請問修飾子proteceted 和 (default) [Re:Duncan] |
metavige
![]() 麥塔.米奇 版主 ![]() 發文: 2133 積分: 10 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() [Effective Java] 條款12:將 class 和其成員的可存取性(accessibility)最小化 裡頭有提到這部份的資訊 ![]() ![]() 請各位新手參考 論壇規範 跟 Java 新手 FAQ |
作者 | Re:請問修飾子proteceted 和 (default) [Re:magicfish] | ||
mojo
![]() ![]() ![]() ![]() ![]() ![]() 發文: 297 積分: 3 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() magicfish wrote: 其是top-level的class還可以用package屬性
這時你檔案名稱存a.java或b.java都可以通過編譯。 如果存成b.java且執行,會印出class b 但如果存成a.java然後執行它,卻也是印出class b 這點我也覺得很奇怪,我也不會解釋 @___@" ![]() ![]() |
作者 | Re:請問修飾子proteceted 和 (default) [Re:item1394] |
mojo
![]() ![]() ![]() ![]() ![]() ![]() 發文: 297 積分: 3 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 引述某人簽名檔: private , protected , public 就像你家的 老婆 小孩 狗 之於你的關係 ![]() ![]() |
作者 | Re:請問修飾子proteceted 和 (default) [Re:mojo] | ||
yengceng
![]() ![]() ![]() ![]() ![]() ![]() 發文: 17 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() mojo wrote: 檔名需與class同名,還記得這規則吧~ 我想應該是這樣子吧~ 所以a.java 理應 class a 那b.java 就應class b囉~ 即然同一個程式裡,java自動判斷檔名與class囉... ![]() ![]() ~真相只有一個,我只相信真相~ |
作者 | Re:請問修飾子proteceted 和 (default) [Re:yengceng] |
yingssu
![]() ![]() ![]() ![]() ![]() ![]() 發文: 111 積分: 1 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() yengceng wrote: 我記得只有public class才需要與檔案同名 不知道有沒有記錯 ![]() ![]() |
作者 | Re:請問修飾子proteceted 和 (default) [Re:mojo] | ||||||
tree671025
![]() Dragon ![]() ![]() ![]() ![]() ![]() 發文: 63 積分: 1 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() mojo wrote: 感覺這一篇精華好像沒有討論完 做了以下實驗: ---c.java---
----------> c
-----------> d
------------> c ![]() ![]() ▂▃▄▅▆▇█TRY TO BE A MAN█▇▆▅▄▃▂ 我的JAVA第一歨--->看完所有精華區 我的JAVA第二歨--->看懂所有精華區 我的JAVA第三歨--->暫時還沒想到 =.= |
作者 | Re:請問修飾子proteceted 和 (default) [Re:tree671025] |
Yoshi
![]() 塵世中一個迷途小書僮 版主 ![]() 發文: 874 積分: 22 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() tree671025 wrote: 你去compile .java檔時,有沒有注意到compiler產生出來的.class檔有幾個? 你到底是使用java c來run,還是使用java d來run? ![]() ![]() YOSHI! |
作者 | Re:請問修飾子proteceted 和 (default) [Re:Yoshi] |
tree671025
![]() Dragon ![]() ![]() ![]() ![]() ![]() 發文: 63 積分: 1 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() Yoshi wrote: sorry我了解了.... 因為我是用GEL去測試的 謝謝點醒我 因為我都用看的比較多 很少實做 ![]() ![]() ▂▃▄▅▆▇█TRY TO BE A MAN█▇▆▅▄▃▂ 我的JAVA第一歨--->看完所有精華區 我的JAVA第二歨--->看懂所有精華區 我的JAVA第三歨--->暫時還沒想到 =.= |
作者 | Re:請問修飾子protected 和 (default) [Re:item1394] |
kpeter6
![]() ![]() ![]() ![]() ![]() ![]() 發文: 5 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 下圖是Java教學手冊所整理的,希望對大家有幫助 ![]() ![]() ![]() |
作者 | Re:請問修飾子protected 和 (default) [Re:item1394] |
mover
![]() ![]() ![]() ![]() ![]() ![]() 發文: 22 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 大家争论坛的好激烈啊。等我学好了,我相信我一定可以把这个说明清楚。嘿嘿。 我相信一点,程序来自于生活。生活也是要遵守一定的程序。哈哈。 ![]() ![]() |
作者 | Re:請問修飾子protected 和 (default) [Re:item1394] | ||||||||||
ajyi
![]() ![]() ![]() ![]() ![]() ![]() 發文: 55 積分: 1 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 看完還是很不了解 ![]() 之前在繼承別人的Class時試著使用過Super Class的protected method 發現在不同的Package無法使用,而必須在同一個Package中才行 這跟我在Sun的SL 275教材中,所說的不同 所以呢?我寫了簡單的程式來實驗 Super Class - A.java
Sub Class in the same package - B.java
Sub Class in the different package - C.java
B.java編譯正常,執行結果如下:
C.java編譯錯誤,訊息如下:
這樣的結果就讓人搞不清楚default與protected的差別了 ![]() ![]() |
作者 | Re:請問修飾子protected 和 (default) [Re:ajyi] | ||||||||
ajyi
![]() ![]() ![]() ![]() ![]() ![]() 發文: 55 積分: 1 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 又看了其他大大的文章有點搞懂了 將原來的程式改為 Sub Class in the same package - B.java
Sub Class in the different package - C.java
B.java同樣執行正常 而這次編譯C.java就如同預期得到錯誤訊息如下:
只有default method無法使用,而protected method正常,將該行註解後,也可以得到正常的執行結果
用Code來看就滿清楚的! ![]() ![]() |
作者 | Re:請問修飾子protected 和 (default) [Re:item1394] | ||||||||
ajyi
![]() ![]() ![]() ![]() ![]() ![]() 發文: 55 積分: 1 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 去翻了舊程式,看看以前遇到的問題,發現還是無解也不知道為什麼 ![]() 以簡單的內容表達大致如下: 多了protected inner class的Super Class - A.java
Sub Class in the same package - B.java
編譯執行都正常 Sub Class in the different package - C.java
編譯時發生錯誤
請問這是怎麼回事呢? 是不是C繼承A,也同時繼承了A的protected inner class,所以可以使用C.InnerClass,但是因為C不是繼承A的inner class,所以無法使用inner class中的protected method呢? ![]() ![]() |
作者 | Re:請問修飾子proteceted 和 (default) [Re:Kent_tseng] | ||
rivalhw
![]() ![]() ![]() ![]() ![]() ![]() 發文: 4 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 舉的例子很好,簡洁明了,一看就知~~~ PS:frank 兄太幽默了~~~經典說法耶 ![]() Kent_tseng wrote: ![]() ![]() |
|
» JWorld@TW » Java 新手區 |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() |