Re: [問題] 禁止子類別宣告與上層變數名稱相同的變數

看板java作者 (ken)時間16年前 (2009/03/10 14:24), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/6 (看更多)
※ 引述《kenl (ken)》之銘言: : ※ 引述《PsMonkey (痞子軍團團長)》之銘言: ...我原完明白測試程式碼想表達的 我不是想要寫個重覆宣告就會當掉的程式 我意思是如果程式很大,連自己也會忘記 有沒有辦法可以像使用private一樣 在compile time時就就compiler會告訴你變數的宣告範圍有問題 例如把全部變數宣告成 public 一定很方便 programmer一定有能力使得程式運作正常 但一般都會盡量使用 private 寧可complier提醒你class中沒有宣告變數 也不願在同一class中有兩個含糊的相同名稱 : 例如我有一個變數 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的程式碼 : ) : 我知道如果當初寫程式時 : 每次都明確寫成 this.counter 或 parent.counter : 這樣的話將來在 inner class 再宣告counter時 : 也不會有bug,但這樣很不方便 : : 覆蓋? 我實在很想說:「請定義一下『覆蓋』的意思」 : : 不過,這好像有點瞎... : : 還是來寫程式吧... : : public class Test { : : int a; : : Foo foo; : : class Foo{ : : int a; : : Foo(){ : : this.a=100; : : } : : public String toString(){ : : return ""+a; : : } : : } : : public String toString(){ : : return "this.a="+a + "\n foo.a="+foo.a + "\n "+foo; : : } : : Test(){ : : foo = new Foo(); : : this.a=-1; : : } : : public static void main(String[] args) { : : Test a = new Test(); : : System.out.println(a); : : } : : } : : 當然,如果你只是要別人不能取同樣的名字... : : ㄜ... 阿.... Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.90.200

03/10 14:33, , 1F
所以你希望只有一種變數 scope. 那反而更不方便吧.
03/10 14:33, 1F
文章代碼(AID): #19jWUFeN (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 4 之 6 篇):
文章代碼(AID): #19jWUFeN (java)