scala1.构建一个伴生类,其中包括:至少一个成员变量,及其对应的读写方法;至少一个成员方法,可以操作成员变量;至少两个构造器,构造器中要有打印语句。
时间: 2024-09-07 22:05:38 浏览: 34
使用Scala进行Web开发:构建你的第一个Web应用.md
Scala中的伴生类(Companion Class)是一种特殊的类设计模式,它与主类共享同一个名称并且可以在不需要创建新实例的情况下访问其成员。以下是创建一个包含所需元素的伴生类的例子:
```scala
// 定义一个名为Person的主类和它的伴生类
class Person(name: String) {
// 成员变量
private var age: Int = _
// 读写方法
def setAge(newAge: Int): Unit = {
if (newAge > 0) {
age = newAge
} else {
println("年龄不能为负数")
}
}
def getAge: Int = age
// 操作成员变量的方法
def celebrateBirthday(): Unit = {
setAge(age + 1)
println(s"祝你生日快乐,你现在${age}岁了。")
}
override def toString: String = s"Name: $name, Age: ${age}"
}
// 伴生类
object Person {
// 构造器1
def apply(name: String, age: Int): Person = {
println(s"Creating a new person with name: $name and initial age: $age")
val person = new Person(name)
person.setAge(age)
person
}
// 构造器2,没有直接设置年龄,用于演示默认值
def apply(name: String): Person = {
println(s"Creating a new person with default age: 0")
new Person(name)
}
}
// 使用示例
val person1 = Person("Alice", 30)
person1.celebrateBirthday()
println(person1)
val person2 = Person("Bob")
println(person2)
```
在这个例子中,`Person`类有一个伴生对象`object Person`,它有两个构造器,分别允许设置初始年龄和仅提供默认年龄。`apply`方法作为工厂方法,可以直接创建`Person`的实例,并且每个构造器都有相应的打印语句。
阅读全文