对于java的动态绑定,我是这么理解的
public class A{
public void test(){
System.out.println("调用A的test方法");
}
public void atest(){
System.out.println("调用A的atest方法");
}
}
public class B extends A{
public void test() {
System.out.println("调用B的test方法");
}
public void btest(){
System.out.println("调用B的btest方法");
}
}
public class Test {
public static void main(String[] args) {
A a=new B();
a.test();//此处输出“调用B的test方法”
a.atest();//此处输出“调用A的atest方法”
a.btest();//此处会报编译错误
}
}
当父类指向子类时,调用父类和子类都有的方法时,运行子类的重写方法。
如上B重写了A的test的方法,则调用B的test方法。
当父类指向子类时,调用父类有,但子类没有的方法时,运行父类的方法
子类默认继承父类方法(私有的除外),即默认重写了父类的方法,调用的是super.父类方法
如上B没有A中的atest方法,但B继承了A,所以调用A的atese方法
当父类指向子类时,调用子类中,父类没有的方法时,会提示编译错误
如上B调用了btest方法,A中没有该方法,所以编译错误
这就是java的动态绑定,个人理解是这样的,欢迎指正
本文详细探讨了Java中的动态绑定概念,通过一个实例展示了当父类引用指向子类对象时,如何调用重写和继承的方法。动态绑定使得在运行时确定方法的实现,调用子类的方法以实现多态性。当调用不存在的方法时,编译器将报错。理解这一机制对于Java编程至关重要。
217

被折叠的 条评论
为什么被折叠?



