在Scala中,一个类可以有多个构造函数,每个构造函数可以调用不同的超级方法。以下是一个示例:
class Animal(val name: String) {
def eat() {
println(s"$name is eating.")
}
}
class Dog(override val name: String, val breed: String) extends Animal(name) {
override def eat() {
println(s"$name the $breed is eating.")
}
}
class Cat(override val name: String, val color: String) extends Animal(name) {
override def eat() {
println(s"$name the $color cat is eating.")
}
}
object Main {
def main(args: Array[String]): Unit = {
val dog = new Dog("Buddy", "Golden Retriever")
val cat = new Cat("Fluffy", "White")
dog.eat()
cat.eat()
}
}
在这个例子中,Animal
类有一个构造函数,Dog
和Cat
类都继承了Animal
类,并且有各自的构造函数。Dog
和Cat
类都重写了eat()
方法,以显示不同的行为。
在Dog
和Cat
类中,我们使用override
关键字来表示我们正在重写Animal
类的eat()
方法。我们还使用super.eat()
来调用Animal
类的eat()
方法,以便在Dog
和Cat
类中的eat()
方法中添加额外的行为。
在Main
对象中,我们创建了一个Dog
和一个Cat
实例,并调用它们的eat()
方法。输出将显示每个动物的名字和它们正在吃东西的情况。
领取专属 10元无门槛券
手把手带您无忧上云