class A{
    void getMember(){
    ........
    }
}
class B extends A{
    void getMember(){
    ......
    }
}
class C{void static main(){
    A instanceOfA = new B();
    //在这里我怎么用对象 instanceOfA 调用A类里面的getMember() 方法呢 ? 谢谢!!
}

解决方案 »

  1.   

    很遗憾的告诉你,调用不了的;
    创建对象用的是子类去创的就调不了父类的被覆盖的方法了,这是因为JAVA里方法的空间是动态分配的
    如果是想调用父子类同名的属性,可以强转成父类调用。
      

  2.   

    要调用A中的getMember方法也只能创建A的对象
      

  3.   

    为什么不直接点 A a = new A() 呢 ? 那样就可以调用getMember()了
    还有如果是B b = new B() 去调用A的getMember()那样可以用super()啊
      

  4.   

    在B里写一个方法内容为super.getMember();然后创建B的对象尽情的调用这个B里的方法吧。
      

  5.   

    当然instanceOfA不能调用这个方法,如果按照你写的和你说的,确实没办法调用 因为instanceOfA只能用B类继承和重写的方法,增加的方法不可以调用。
      

  6.   

    为什么要这么写呢?如果C是多重继承,如果是A类对象就是用A的方法的话可以在B类重写时价格判断,ifA b isinstanceOfA {super.getMember();}再继续写B类的方法,不可以吗?
      

  7.   

    super.getMember();(只能是直接父类中的方法)
      

  8.   

    他们说的都不对,教你一个绝招
    在父类和子类的相同的方法上面都加上static关键字,
    然后:
     A instanceOfA = new B(); 
    instanceOfA ....();这里调用的是父类的方法 B instanceOfB = new B(); instanceOfB ....()这里调用的是子类的方法OK,明白了吧,仔细消化一下
      

  9.   

    无法调用A的方法了,你只能实例化A类,来调用A中的该方法
      

  10.   

    恩恩 很对 验证过了
    class A{ 
        static void getMember(){ 
        System.out.println("A类中的方法"); 
        } 

    class B extends A{ 
        static void getMember(){ 
         System.out.println("B类中的方法");  
        } 

    public class C{ public  static void  main(String arg[]){
        A instanceOfA = new B(); 
        instanceOfA.getMember();    B instanceOfB = new B();     instanceOfB.getMember();     
    }
    }结果A类中的方法
    B类中的方法
    学习思考中……
      

  11.   

    为什么加入了static就可以了呢 不明白 希望有人能够解释下
      

  12.   


    兄弟我也发现了这个问题,在eclipse中无法体现出多态的性质
      

  13.   

    楼主你要是在eclipse中运行,instanceOfA.getMember()就是走A的方法。但是根据java的多态,这样调用instanceOfA.getMember()是走B的方法。
      

  14.   

    与eclipse有关吗?????,呵
      

  15.   

     A instanceOfA = new B(); 可以直接调用父类方法,因为你创建了对象类型就是A
      

  16.   

    super.getMember();
    应该可以啊。
      

  17.   

    楼主我给你提一个问题:也是这样的,看看你能回答吗?http://topic.csdn.net/u/20091230/09/abffb380-2f57-48ae-817a-d2e56498ee28.html?57992
      

  18.   

    还是基本知识呀:  动态绑定和静态绑定而已static/final 方法的调用使用的静态绑定策略,在编译阶段,编译器就可以根据instanceOfA的引用类型A来确定需要调用A中的getMember()。而普通方法的调用采用的是动态绑定策略(在运行阶段需要考虑引用类型和实际类型),这里就不多说了。这招是江湖上的常用招数。
      

  19.   

    加入static其实就不算多态啦
      

  20.   

    csdn里面的朋友都有着极其无聊的一面!
      

  21.   


    我个人的看法:A instanceOfA = new B()之后,instanceOfA 所使用的函数表是A的函数表,那么当调用....()的时候,去A发现方法是static,也就是invokespecial,那么就直接调用了A中的....()方法.
    B instanceOfB = new B()所使用的函数表是B中的函数表,所以会调用B中的....()方法.
      

  22.   

    乱整啊,方法使用了static 后,就不存在重写这个概念了
    如果实在需要在子类中另外调父类的方法,只能另外写一个方法,在那个方法内调用了
    如 父类有 test 方法,子类重写了它,我们可以在子类中作另一个方法 testA ,在里面调用 super.test();
      

  23.   

    使用 static 后方法是属于类的
    不是实例的了.跟楼主所提的问题相去甚远.
      

  24.   

    使用static的话,那用new一个实例呀。
    直接用A.getMember()或B.getMember()就得啦。