scala定义一个类Shape,它包含一个抽象函数getArea(),从Shape类派生出Rectangle和一个特质Circle,它们重写getArea()函数,计算其的面积。编写伴生对象,测试Rectangle和Circle,并输出。 输入1求长方体面积 输入2
时间: 2024-10-21 20:06:00 浏览: 27
Scala中,我们可以创建一个抽象类`Shape`,其中包含一个抽象方法`getArea()`,然后通过继承和特质的方式定义具体的形状如`Rectangle`和`Circle`。抽象方法`getArea()`需要由每个子类实现以提供各自的面积计算。
```scala
abstract class Shape {
def getArea(): Double
}
trait Circle extends Shape {
val radius: Double
override 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 = {
// 定义形状实例
val rect = Rectangle(5, 7)
val circle = Circle(3.0)
// 测试并输出面积
println(s"Rectangle area: ${rect.getArea()}")
println(s"Circle area: ${circle.getArea()}")
// 根据用户输入选择形状
if (args.head == "1") {
println("Input 1 selected. Calculating rectangle area...")
} else if (args.head == "2") {
println("Input 2 selected. Calculating circle area...")
} else {
println("Invalid input. Please enter '1' or '2'.")
}
}
}
```
在这个例子中,如果输入`1`,会计算矩形的面积;如果输入`2`,则计算圆形的面积。注意,Scala的`main`函数接收命令行参数,这里的`args.head`用于获取第一个输入。
阅读全文