这样不行吧,因为class c 没有继承,a 或者 b 呀
----------------------
//我是菜鸟,请多关照!!

解决方案 »

  1.   

    有道理,可行((a) haha).m_1();
      

  2.   

    用super关键字
    super.haha.m_l()
      

  3.   

    ((a) haha).m_1();是不可以的!仍然会执行的是B的方法,因为无论你怎么类型转换,实际上
    haha仍然是B,所以是不行的
      

  4.   

    谢谢各位,先
    中午回来试了一下,用强制转换是可以的上面有人,用super关键字,我开始也是打算这样的,
    可是,class c 并没有继承自任何其他的类
    所以super就不能指向 class b 而是指向 object 
    所以不能用super关键字,我说得对吗?----------------------
    //我是菜鸟,请多关照!!
      

  5.   

    强制类型转换在编译来说当然成功,但是实际上你的调用仍然不正确
    ((a) haha).m_1();其实和haha.m_1()执行的效果是一样的,都是调用类b的方法m_1
    并没有随着你的强制类型转换而改变这种是java的处理机制,如果不是这样的话就出现很多混乱的情况了
      

  6.   

    强制类型转换在编译来说当然成功,但是实际上你的调用仍然不正确
    ((a) haha).m_1();其实和haha.m_1()执行的效果是一样的,都是调用类b的方法m_1
    并没有随着你的强制类型转换而改变这种是java的处理机制,如果不是这样的话就出现很多混乱的情况了
      

  7.   

    强制转换是不行的。java的运行机制是RTTI的。有程序为证!
    class A{
    void baseMethod(){
    System.out.println("A:baseMethod is called");
    }}class B extends A{
    void baseMethod(){
    System.out.println("B:baseMethod is called");
    }
    }public class C{
    public void test(){
    B b = new B();
    b.baseMethod();
    ((A)b).baseMethod();//强制转化
    }
    public static void main(String[] args){
    C c = new C();
    c.test();
    }
    }//---------console output--------------------B:baseMethod is called
    B:baseMethod is called至于如何调用父类的方法,我也不知道。
      

  8.   

    如果不行那就只有在B里面写个另外的函数,那里面调用super.fuc()到底行不行,一个说可以了,另一个说不行,呵呵
    自己又懒得去试!
      

  9.   

    ((A)b).baseMethod()执行的只能是B类重写A类的方法,要想用A类的方法只能在B类中使用super.baseMethod()。
      

  10.   

    虽然结帐了,但还是自己想在贵帖上整理一下自己。a haha=new b();
    就可以调用了。
    使用的是java中的隐藏。