作者kenl (ken)
看板java
标题Re: [问题] 禁止子类别宣告与上层变数名称相同的变数
时间Tue Mar 10 14:24:13 2009
※ 引述《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
1F:推 ogamenewbie:所以你希望只有一种变数 scope. 那反而更不方便吧. 03/10 14:33