设计圆形类和三角形类,求面积。
1.封装:类里封装了数据和方法,封装实现了信息隐藏,保证了数据安全。
2.继承:圆形类和三角形类都是从形状类继承而来,父类和子类之间是一般和特殊(a kind of)的关系,圆形是形状的一种,三角形也是形状的一种。
3.多态:多态一般和继承有关。父类暂时没有图形的具体信息,所以暂时无法实现Area方法,定义为抽象类。需要在子类中实现(重写)父类的Area方法。不管是求什么形状的面积,main函数中永远是通过shape.Area求面积。(shape类似于C++的基类指针,可以指向派生类对象)
下面用冷门语言编写该程序:
import scala.math.sqrtabstract class Shape
{def Area:Double
}class Circle(_r:Double) extends Shape{var r:Double=_rdef Area:Double={3.14*r*r}
}class Triangle(_a:Double,_b:Double,_c:Double) extends Shape{var a:Double=_avar b:Double=_bvar c:Double=_cdef Area:Double={val l=(a+b+c)/2sqrt(l*(l-a)*(l-b)*(l-c))}
}object ShapeArea {def main(args:Array[String]):Unit={var shape:Shape=new Circle(3.0)println(shape.Area)shape=new Triangle(3.0,4.0,5.0)println(shape.Area)}
}