这里有两个作为父类的类:abstract BaseA有个方法methodA() ,abstract BaseB.
BaseB的子类一定会有一个属性ba是BaseA的子类的实例。BaseB现在需要有一个方法methodB()它需要调用BaseA。methodA() 方法怎么办?
-------------
上面比较生硬:
比如 Class ClassC extends BaseA.Class ClassD extends BaseB{
private ClassC cc=new ClassC();
public methodD(){
super.methodB();//这个方法的实现需要调用cc.methodA()方法怎么办?
}
}

解决方案 »

  1.   

    重写methodB
    super.methodB()后面直接写
    cc.methodA();
      

  2.   


    abstract class  BaseA{
    public void methodA() {
    System.out.println ("BaseA 的 method A");
    }
    }class A extends BaseA{

    }abstract class  BaseB{
    public void  methodB(){
    System.out.println ("BaseB 的 method A");
    }
    }
    class B extends  BaseB{
    private BaseA ba = new A();


    public void methodB(){
    ba.methodA();
    }



    }class Test{
    public static void main(String[] args){
    BaseB b = new B();
    b.methodB();
    }
    }
      

  3.   

    重写methodb  在该方法中调用  methoda
      

  4.   

    3楼的方法错了class A extends BaseA{
        
    }//既然继承了抽象类,那就应该实现抽象类的方法不知道是笔误还是?class A extends BaseA{
      public void methodA(){}   
    }注意抽象类的对象不能用new来创建,如下class test(){
    BaseA basea;basea=new  A;//把对象赋值给类A
    basea.methodA();//这样就可以调用类A的方法
    }
    另外,抽象类的方法一般的是空方法,而在继承它的子类中实现
      

  5.   

    http://blog.csdn.net/shili150/archive/2008/03/25/2216033.aspx
    看我博客里的一篇文章转的
      

  6.   

    楼上这位仁兄,
    在抽象类中是可以有实现方法的,不一定是你说的这样。
    子类只需要实现他的抽象方法就可以了。lz说的也很清楚baseb有一个属性,类型为basea的子类,所以可以在methodb中调用basea子类的methoda方法。
      

  7.   


    这个地方没有错,BaseA虽然是抽象类,但并没有抽象方法。
      

  8.   

    BaseA 中没有抽象方法啊. 
    呵呵. 不过还是谢谢你. 
    我代码已经测试过了的。