scala创建一个类,名称为Circle,声明一个变量r作为半径,写一个函数,给定一个圆的半径,计算这个圆的面积,创建一个单例对象Circle,在其中给变量r赋值为5,输出圆的面积。
时间: 2024-10-21 17:03:06 浏览: 22
在Scala中,你可以按照以下步骤创建一个名为Circle的类,计算圆的面积,并实现单例模式:
```scala
// 定义Circle类,包含半径变量r
class Circle(val r: Double) {
// 计算圆的面积函数
def area: Double = math.PI * r * r
}
// 创建Circle类的单例对象
object Circle {
// 在单例对象中初始化半径为5
private val circleInstance = new Circle(5)
// 提供一个方法获取并计算圆的面积
def getArea: Double = circleInstance.area
// 输出圆的面积
def main(args: Array[String]): Unit = {
println(s"Circle's area with radius 5 is ${getArea}")
}
}
```
在这个例子中,我们首先定义了一个Circle类,它接受一个半径参数并有一个计算面积的方法。然后我们创建了一个Circle的单例对象,其中初始化了半径为5。`main`方法用于测试,调用`getArea`方法并打印结果。
相关问题
Scala定义一个类Shape,它包含一个抽象函数getArea(),从Shape类派生出Rectangle和一个特质Circle,它们重写getArea()函数,计算其的面积。编写伴生对象,测试Rectangle和Circle,并输出。 输入1求长方体面积 输入2求圆面积
在Scala中,我们可以创建一个抽象基类`Shape`,定义一个抽象方法`getArea()`,然后通过继承和特质来实现实例化。让我们来看看如何操作:
```scala
abstract class Shape {
def getArea(): Double
}
trait Circle extends Shape {
var 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 = {
// 测试Rectangle和Circle
val rect = Rectangle(5.0, 4.0)
println(s"Rectangle area: ${rect.getArea()}")
val circle = Circle()
circle.radius = 7.0
println(s"Circle area: ${circle.getArea()}")
// 用户输入选择
val inputChoice = scala.io.StdIn.readInt()
inputChoice match {
case 1 => println("Please enter the dimensions of a rectangle (length and width):")
// 添加用户输入并计算面积
case 2 => println("Please enter the radius of a circle:")
// 添加用户输入并计算面积
case _ => println("Invalid choice.")
}
}
}
```
在这个例子中,如果你想要输入特定尺寸来计算面积,你需要添加相应的用户输入部分。你可以询问用户长度、宽度(对于矩形)或半径(对于圆形),并将这些值赋给相应的字段,然后计算并输出面积。
scala定义一个类Shape,它包含一个抽象函数getArea(),从Shape类派生出Rectangle和一个特质Circle,它们重写getArea()函数,计算其的面积。编写伴生对象,测试Rectangle和Circle,并输出。 输入1求长方体面积 输入2求圆面积
在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的圆形面积。
阅读全文