`
michael.softtech
  • 浏览: 206927 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

java中的method override和variable hide

阅读更多

昨天跟朋友讨论到一个有趣的问题:java中variable有没有override?

真是惭愧啊,到现在才知道原来java中的override只是针对method来讲的,对于变量是hide.

闲言少叙,先上两段代码:

public class Base {
public int x=1;
public void echo(){
	System.out.println(x);
}
}

public class Sub extends Base{
    public int x=2;
 
	public static void main(String[] args) {
		Sub sb=new Sub();
		Base bs=new Base();
		sb.echo();
		bs.echo();
		System.out.println(bs.x+"");
        System.out.print(sb.x+"");
	}

}

 猜猜结果是啥?

 是

1
1
1
2

呵呵,可以看到变量并没有override.

如果做一下改变,在Sub里面override echo方法,并且与Base的一模一样,再运行,结果是什么呢?

public class Sub extends Base{
    public int x=2;
    public void echo(){
    	System.out.println(x);
    }
	public static void main(String[] args) {
		Sub sb=new Sub();
		Base bs=new Base();
		sb.echo();
		bs.echo();
		System.out.println(bs.x+"");
        System.out.print(sb.x+"");
	}

}

 呵呵,结果是:

2

1

1

2

 

不过话说回来,我觉得除非真的被逼无奈,不然不要在一个hierachy下面定义名字重复的变量,否则很容易出现“潜伏”的问题。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics