Re: 程式語言文法簡化 (was: [問題] 從文字檔讀取먠…

看板java作者 (godfat 真常)時間16年前 (2009/08/21 15:00), 編輯推噓5(5010)
留言15則, 4人參與, 最新討論串2/7 (看更多)
一些補充 XD 有時候會覺得有些人好像會把一些補充心得之類的回覆, 看成是一種反駁... 所以聲明一下,沒針對什麼。 ※ 引述《adrianshum (Alien)》之銘言: : 比如 C# 在 override 的時候要加上 override : keyword (現在 java 也可以加 @Override 了, : 不過相比之下 C# 的做法比較好), 雖然 99% 的情 : 況下, 你都是要override 的, 但萬一有一次, 你 : 其實是想建一個新 method, 怎麼不小心和 super : class 的 method 同名了, compiler 就可以靠著 : 你少打這字提出 warning/error. 這點我有同感,Scala 也是要求「一定要」寫 override. 我曾經在寫 C++ 時,執行起來覺得很奇怪, 一直沒有叫到我要的 method, 檢查半天才發現, method signature 有點相異,沒有被視為 override, 變成 overloading. compile 時不會有任何警告。 但如果一定要寫 override, signature 不對時, compiler 會告訴你 you override nothing... 不過 C++ 的 virtual, 也有一點 @Override 的味道在。 比方說原本就沒有設計要做 virtual method, 就算 subclass 誤用到同名 method + signature, 也不會因此 override 到不該 override 的東西。 當然啦,virtual 的設計是拿來做最佳化,跟 @Override 關係不大就是了。 : public 要 explicit, 某程度我覺得是由 C++ : 或其他 OOP 的做法帶過來, 但當初別人決定 public : 雖然是最常用但還是要 explicitly 聲明, 很可能就 : 是因為他們覺得東西不該隨意給其他人看到, 除非你 : 真的想給別人看. 萬一有人是忘了給 accessibility : modifier 而不是故意不給的話, 那東西就不該給其他 : 人看到, 所以 C++ 是當成 private, Java 可能因為覺 : package 內或 child class 的都是 "自家人" 所以把 : accessibilty 侷限在這. C++ 不會有這樣囉嗦的問題,是因為 public: 之後全是 public, 而 Java 卻要全部都打出來。因此 C++ class 預設 private, 感覺是沒什麼差。而 Java 的 protected... Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N private Y N N N 為什麼沒這個 Y N Y N 我還是不懂... 這樣看起來,Java 是把 package 視為比 subclass 更狹小的範圍。可能因為我 Java 寫太少吧 XD 只是因為 C++ 的使用習慣,實在不覺得 protected 應該被 同個 package 的 class 存取。除非,我用一大堆 package, 每個 package 可能只放 subclass 這樣 :p 但這樣也未免太麻煩了一點,畢竟 package 也會影響 source path. 而下 class path, 那會更恐怖。 -- 「行け!Loki!」(rocky ロッキー) -Gurumin ぐるみん 王子? XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.28.18

08/21 15:26, , 1F
package 比 subclass 更親近, 像家人跟朋友的差別.
08/21 15:26, 1F

08/21 18:11, , 2F
樓上: 我反而覺得 subclass 才像家人,畢竟"血統"有關連
08/21 18:11, 2F

08/21 18:19, , 3F
你寫你自己一家, 我 extend 你家的sub是我家不是你家.
08/21 18:19, 3F

08/21 18:52, , 4F
當extend,就是 is-a 的關係了,is-a怎都比非is-a親近吧
08/21 18:52, 4F

08/21 18:56, , 5F
所以你對我寫的sub的信任程度高過你自己本家package?
08/21 18:56, 5F

08/21 18:58, , 6F
你在想的是你自己弄 package 跟 subclass...
08/21 18:58, 6F

08/21 18:58, , 7F
請想想一群公司/團體/個人自己分別有 package...
08/21 18:58, 7F

08/21 18:59, , 8F
互相 extend 來 extend 去的情況.
08/21 18:59, 8F

08/21 19:07, , 9F
package 作為logical grouping,說是親近我實在不能苟同
08/21 19:07, 9F

08/22 08:37, , 10F
java該是希望少用extends的,在這情況下,到處都interfac
08/22 08:37, 10F

08/22 08:39, , 11F
只允許同package底下的class存取是很有幫助的
08/22 08:39, 11F

08/22 08:41, , 12F
java有蠻多實作,你去複製原始碼貼到你的程式會不能用
08/22 08:41, 12F

08/22 08:43, , 13F
因為他跟你的package不同,叫不到...以上是我個人心得
08/22 08:43, 13F

08/22 08:46, , 14F
話說推文的等待時間太長了吧...1分鐘
08/22 08:46, 14F

08/22 08:56, , 15F
搬去同一個社區就可以用他的資源了 XD
08/22 08:56, 15F
文章代碼(AID): #1AZaOAyt (java)
討論串 (同標題文章)
文章代碼(AID): #1AZaOAyt (java)