当子类继承了父类后,如果父类的句柄指向子类的实现Father father=new Child();并且子类覆盖了父类的方法 ,那么为什么方法是static时 调用的是父类的方法 若不是static时 就调用的是子类的方法 ,望各位大虾指教

解决方案 »

  1.   

    static 类型的数据是在声明的时候就绑定好的
    所以是跟声名的那个相对应这种叫做静态绑定!
      

  2.   

    是不是当Father father=new Child();时 如果方法是静态的就先看父类中的方法,如果不是静态的就先看子类中的方法 ,如果子类中没有覆盖父类的该方法就调用父类中的方法 是这么个意思吗?我想知道的具体点 它的具体调用的过程 请大虾多多指教
      

  3.   

    具体的  就是Father father=new Child();father对静态方法或非静态方法以及字段的调用 具体是什么选择的 它的过程是什么样子的 比如说是去父类中调用 还是去子类中调用 什么时候去那个类里调用
      

  4.   

    你看看这个程序
    class A
    {
    int i = 1;
    }class B extends A
    {
    int i=2;
    }public class test
    {    public static void main(String[] args){
         A a=new B();
         System.out.println(((B)a).i);
         System.out.println(a.i);
        }