C extends B,B extends A
A,B,C均有方法d();
在C中,super.d()可以访问B中的d()方法,
如果还想在C中直接访问A中的d()方法怎么办?

解决方案 »

  1.   

    不能这么干。
    如果你实在想这么干,那可以试试用Reflection
      

  2.   

    需要前提条件。你超类的d方法是静态的还是非静态的。
    举个例子。如果你的d方法在a中是这样写的class A { 
    static String d() 

       return "A"; 
    } class b extends a 

    static String d() 

       return "B"; 
    } 现在A中的d方法是静态的。如果这样调用b时。会返回的字符是"A"
    如果A中的d方法不是静态的。如果这样调用b时。会返回的字符是"B".有一个原则:实例方法被覆盖,静态方法被隐藏只不过你现在的问题是多重继承。按照这个原则判断就行了
      

  3.   

    Reflection似乎也不行,呵呵,看来是没啥办法了。
      

  4.   

    恩,谢谢大家的回答,刚接触JAVA不久,并不知道这样做有悖设计原理,只是比较好奇这样的访问方式,再次感谢一下
      

  5.   

    用拦截器,修改父类的方法,第一句改为super.method();有点卑鄙!
      

  6.   

    直接访问很难搞
    new 吧,在 c 里面 new A
      

  7.   

    to 6楼,本来我就觉得楼主的方法是不对的。所以并没有给他答案。
    我只是告诉他java对于继承方法覆盖是怎么处理的。按照原理判断,他自然会知道他想的方法是不可行的。
      

  8.   

    试一试名字空间引用
    C++里面可以这样,java里面我没有试过