黑马程序员技术交流社区
标题:
静态方法为什么不能覆盖
[打印本页]
作者:
马静
时间:
2014-8-15 09:46
标题:
静态方法为什么不能覆盖
可以解释的复杂一些基础一些吗,我怕我还是听不懂,谢谢了
作者:
fantacyleo
时间:
2014-8-15 10:13
覆盖是跟多态和动态绑定联系在一起的。你拿着父类引用调用一个方法,实际被调用的方法取决于父类引用指向的对象是哪一个(父类或某一个子类对象)。但静态方法本身不与任何对象相联系(虽然Java允许通过对象来调用静态方法,但某些OO语言,如Objective-C是不允许用对象来调用静态方法的),自然也就不会和多态相联系,谈不上覆盖了。
作者:
wisely
时间:
2014-8-15 12:18
毕向东老师的视频里说:静态方法只能覆盖静态方法,我理解为可以覆盖,只是没什么意思吧了。
class Fu{
public static void print(){
System.out.println("这是父类");
}
}
class Zi extends Fu{
public static void print(){
System.out.println("这是子类");
}
}
public class Demo{
public static void main(String[] args){
Fu f=new Zi();
f.print();
Zi z=(Zi)f;
z.print();
}
}
复制代码
打印值看的是类类型变量,类类型变量是什么类型,就调用哪个方法。与new无关。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2