abstract class Geometry 
{  
    public abstract double ComputerArea();
}
class Lader extends Geometry 

    double a,b,h;
    Lader(double a,double b,double h)
    {  
       this.a=a;this.b=b;this.h=h;
    }
    public double ComputerArea() 
    {  
         return((1/2.0)*(a+b)*h);
    }
}
class Circle extends Geometry  
{  
    double r;
    Circle(double r)
    {  
       this.r=r;
    }
    public double ComputerArea()
    {  
       return(3.14*r*r);
    }
}
class Cone 
{  
    Geometry bottom;
    double height;
    Cone(Geometry bottom,double height) 
    { 
        this.bottom=bottom;
        this.height=height;
    }
    void changBottom(Geometry bottom) 
    {
        this.bottom=bottom;
    }
    public double ComputerVolume() 
    {  
       return (bottom.ComputerArea()*height)/3.0;
    }
}
public class Example

    public static void main(String args[]) 
    { 
       Cone cone;
       Geometry geometry;
       geometry=new Lader(2.0,7.0,10.7);
       System.out.println("梯形的面积"+geometry.ComputerArea()--?);
       cone=new Cone(geometry,30);
       System.out.println("梯形底的锥的体积"+cone.ComputerVolume());
       geometry=new Circle(10);
       System.out.println("半径是10的圆的面积"+geometry.ComputerArea()--?);
       cone.changBottom(geometry);
       System.out.println("圆形底的锥的体积"+cone.ComputerVolume());
    }
}
虽然是个java的例子,但是道理是一样的,想问一下,接口可以回调,但抽象类不允许回调,但以上这个例子不是一种回调吗?谢谢