Re: [問題] 禁止子類別宣告與上層變數名稱相同的變數
※ 引述《kenl (ken)》之銘言:
: ...我原完明白測試程式碼想表達的
: 我不是想要寫個重覆宣告就會當掉的程式
: 我意思是如果程式很大,連自己也會忘記
: 有沒有辦法可以像使用private一樣
: 在compile time時就就compiler會告訴你變數的宣告範圍有問題
: 例如把全部變數宣告成 public 一定很方便
: programmer一定有能力使得程式運作正常
: 但一般都會盡量使用 private
: 寧可complier提醒你class中沒有宣告變數
: 也不願在同一class中有兩個含糊的相同名稱
完全明白嗎? 那為甚麼我不明白你的明白?
請去看我寫的 Foo.toString()
看看他印出來的是什麼東西...
那並不是「含糊」的名稱,而是可以「肯定」是印出哪一個
所以沒有 warning 也是很合理的
更不會有所謂蓋來蓋去的問題
當然,compiler 可以分辨,不過,我還是不喜歡這種東西
雖然 Eclipse 的 setter generator 是長這樣... Orz
class Foo{
private int orz;
public setOrz(int orz){
this.orz=orz;
}
}
: : 例如我有一個變數 int counter
: : 在程式每個 class (包括inner class)中都共用
: : 如果別人(或者將來的我)
: : 在 inner class 中再宣告 int counter=0
: : 這樣 complier 會完全沒有 warning
: : (之前在這個 inner class 中一直使用外面的 counter
: : 現在變成 inner class裡的counter都變成0了
: : 我想知道有沒有方法
: : 使得將來的我在這個 inner class 中宣告 int counter時
: : 會知道這樣會影響之前在這個inner class中使用外面counter的程式碼
: : )
至於下面的
很好,那麼,就可以跳開我不熟的東西
(inner class 好難阿... Orz)
來講嘴砲層面的事情 [奸笑]
以你的敘述來說...
1. 為甚麼你要生出「一堆」inner class?
很多 coding style 都建議一個 class 一個 file
(當然,還是有很多考量 or 偷懶的時候,會不適用)
切出不同的 class,就可以用修飾字跟 package
來達到某種程度的權限控制
2. 為甚麼不包成 getter, setter?
: : 我知道如果當初寫程式時
: : 每次都明確寫成 this.counter 或 parent.counter
: : 這樣的話將來在 inner class 再宣告counter時
: : 也不會有bug,但這樣很不方便
--
侃侃長論鮮窒礙 首頁:http://www.psmonkey.idv.tw
眾目睽睽無心顫 Blog:http://ps-think.blogspot.com
煢居少聊常人事
殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.114.200.219
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 6 篇):