Onelong

分享知识,与你一起进步......
RSS icon Home icon
  • java 动态绑定

    post by onelong / 2013-8-15 15:00 Thursday [java]

    首先看代码吧

    public class HelloWorld{

     

    public static void main(String[] args) {

    //System.out.println("Hello World!");

    classA B = new classB();

    }

     

    }

     

    class classA {

    public classA() {

    showself();

    }

     

    public void showself() 

    {

    System.out.println("I am A");

    }

     

    }

     

    class classB extends classA {

    public classB() {

    showself();

    }

     

    public void showself() {

    System.out.println("I am B");

    }

    }

    那些运行结果是什么呢?我当时猜想是这样的
    I am A
    I am B
     
    但是实际是
    I am B
    I am B
     
    关于动态绑定,和c++不带虚函数的继承有点不同。因为c++的是在编译时静态绑定的。虚函数通过虚表指针实现动态绑定或者多态的。要怎样证明java的是动态绑定呢?最好的方法是用反射去测试一下上面的代码。
     
    classA B = classB.class.newInstance();
    这样使用的话,结果还是一样的。不适很好的说明java的动态绑定?

    标签: java
    引用地址:
     

    我要评论