这里有两个作为父类的类: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()方法怎么办?
}
}
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()方法怎么办?
}
}
super.methodB()后面直接写
cc.methodA();
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();
}
}
}//既然继承了抽象类,那就应该实现抽象类的方法不知道是笔误还是?class A extends BaseA{
public void methodA(){}
}注意抽象类的对象不能用new来创建,如下class test(){
BaseA basea;basea=new A;//把对象赋值给类A
basea.methodA();//这样就可以调用类A的方法
}
另外,抽象类的方法一般的是空方法,而在继承它的子类中实现
看我博客里的一篇文章转的
在抽象类中是可以有实现方法的,不一定是你说的这样。
子类只需要实现他的抽象方法就可以了。lz说的也很清楚baseb有一个属性,类型为basea的子类,所以可以在methodb中调用basea子类的methoda方法。
这个地方没有错,BaseA虽然是抽象类,但并没有抽象方法。
呵呵. 不过还是谢谢你.
我代码已经测试过了的。