scala定义一个类Shape,它包含一个抽象函数getArea(),从Shape类派生出Rectangle和一个特质Circle,它们重写getArea()函数,计算其的面积。编写伴生对象,测试Rectangle和Circle,并输出。 输入1求长方体面积 输入2求圆面积
时间: 2024-10-20 16:19:27 浏览: 3
在Scala中,我们可以创建一个抽象`Shape`类,然后使用`trait`定义`Circle`,并让`Rectangle`类实现这个抽象类的`getArea()`方法。伴生对象可以用来测试这两个具体的形状类。这里是相应的代码示例:
```scala
abstract class Shape {
def getArea(): Double
}
trait Circle extends Shape {
var radius: Double
def getArea(): Double = Math.PI * radius * radius
}
case class Rectangle(length: Double, width: Double) extends Shape {
override def getArea(): Double = length * width
}
object Main {
def main(args: Array[String]): Unit = {
// 测试Rectangle
val rectangle = new Rectangle(5, 4)
println(s"Rectangle area: ${rectangle.getArea()}")
// 测试Circle
trait CircleTest {
def testCircle(radius: Double): Unit
}
object CircleTestImpl extends CircleTest {
override def testCircle(radius: Double): Unit = {
val circle = Circle(radius = radius)
println(s"Circle area with radius ${radius}: ${circle.getArea()}")
}
}
// 调用测试方法
CircleTestImpl.testCircle(3.0)
}
}
```
在这个例子中,当你输入1来调用`Rectangle`的面积,程序会返回长方形的面积;输入2来调用`Circle`的面积,程序会计算半径为3.0的圆形面积。
阅读全文