题目: 编写一个椎体类,可以计算它的体积。
方法一:class 椎体
{
数据成员: 高;
底面积;
方法: computeVolume(){ return 1/3*高*computeArea(); };
computeArea(){ return 0; };
}
}
the point is : how can we compute 底面积? so we need to add a function to compute 底面积 ;然而对于不同形状的底有不同的面积计算方式,要怎么解决呢?重载!
class 圆锥 extends 椎体
{
数据成员: 半径;
方法: computeArea(){ return 3.14*半径*半径 ; };
}
class 三棱锥 extends 椎体
{
数据成员: 底边长;
底边高;
方法:computeArea(){ return 1/2 * 底边长*底边高 ; };
}
main(){
椎体 a = new 圆锥();
System.out.println(a.computeVolume().toString());
椎体 b = new 三棱锥();
System.out.println(b.computeVolume().to.String());
}
以上体现的我刚刚学会的上转型解决方案,可能且很大可能 有错误,待日后修改。
1、对象的上转型对象 只能 具有 从 父类继承 而来 的 或者 重写 的 数据成员 和 方法 。
2、对象的上转型对象一般都是要重写方法的,这也是上转型存在的理由。
另外一种抽象,在我看来更加理性专业 , 但本质和方法一一样,就不作为方法二了。将椎体的属性划分为 几何形状 + 高 。
几何形状 是一个抽象类 ,是上转型对象,仅有一个必须重写的computeArea()方法,ok,接下来就是增加继承它的子类,比如三角形,梯形等等 。
方法二: