日期:2014-05-20  浏览次数:20679 次

隐藏和覆盖的区别
书里面的一句话:? “静态方法也能被继承。但是静态方法不能被覆盖
如果父类定义的静态方法在子类中被重新定义,那么定义在父类中的静态方法将被隐藏。可以使用父类名.静态方法名调用隐藏的方法”
举个例子:Animal是一个类,它里面定义了一个static方法Eat();Cat是Animal的子类,里面也定义了一个static方法Eat(),那么Animal animal = new Cat();animal.eat();
这段代码中animal.eat()调用的是父类的方法还是子类的方法?
如果父类中的Eat()方法不是static那么调用是父类的方法还是子类的方法

------解决方案--------------------
http://blog.sina.com.cn/s/blog_7ffb8dd5010120qn.html
------解决方案--------------------
这段代码中animal.eat()调用的是父类的方法还是子类的方法?
答:还是父类方法,Java语法规定,静态方法只能被继承,不能被重写。
    方法不能被重写时,不会构成多态,静态方法是和类相关的,调用时候是类名.方法名。
如果父类中的Eat()方法不是static那么调用是父类的方法还是子类的方法
答:子类方法,如果是非静态的就会构成多态,调用的会是子类的方法。
------解决方案--------------------
静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成的,不需继承机制就可以调用如果子类里面定义了静态方法和属性