Re: 程式語言文法簡化 (was: [問題] 從文字檔讀取먠…
一些補充 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
08/21 15:26, 1F
→
08/21 18:11, , 2F
08/21 18:11, 2F
推
08/21 18:19, , 3F
08/21 18:19, 3F
→
08/21 18:52, , 4F
08/21 18:52, 4F
推
08/21 18:56, , 5F
08/21 18:56, 5F
推
08/21 18:58, , 6F
08/21 18:58, 6F
推
08/21 18:58, , 7F
08/21 18:58, 7F
→
08/21 18:59, , 8F
08/21 18:59, 8F
→
08/21 19:07, , 9F
08/21 19:07, 9F
→
08/22 08:37, , 10F
08/22 08:37, 10F
→
08/22 08:39, , 11F
08/22 08:39, 11F
→
08/22 08:41, , 12F
08/22 08:41, 12F
→
08/22 08:43, , 13F
08/22 08:43, 13F
→
08/22 08:46, , 14F
08/22 08:46, 14F
→
08/22 08:56, , 15F
08/22 08:56, 15F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 7 篇):