Scala关键字:sealed
1. 由来
sealed
是 Scala 中的一个关键字,用于修饰类和特质。它可以限制继承层级,使得只有在同一源文件中或在同一包对象内定义的类可以继承该 sealed 类或特质。这提供了更严格的控制,以确保继承层级的封闭性。
2. 多种主要用法及其代码示例
以下是 sealed
关键字的几种常见用法及相应的代码示例:
2.1 限制继承层级
sealed abstract class Shape
case class Circle(radius: Double) extends Shape
case class Rectangle(width: Double, height: Double) extends Shape
2.2 模式匹配
sealed abstract class Result
case class Success(message: String) extends Result
case class Failure(error: String) extends Result
def processResult(result: Result): Unit = result match {
case Success(msg) => println(s"Success: $msg")
case Failure(err) => println(s"Failure: $err")
}
2.3 与密封类配合使用
sealed trait Animal
class Cat extends Animal
class Dog extends Animal
object Animal {
def createAnimal(animalType: String): Animal = animalType match {
case "cat" => new Cat
case "dog" => new Dog
}
}
3. 其他类似关键字
在 Scala 中,除了 sealed
关键字外,还有一些类似的关键字和特性,包括:
final
:用于修饰类、方法或字段,禁止被继承、重写或修改。private
/protected
:用于限制成员的访问权限。object
:创建单例对象,具有类的行为。case
:用于定义样例类,提供了模式匹配等功能。
这些关键字和特性共同构成了 Scala 语言的核心特点和机制。
4. 详细区别
sealed
关键字用于修饰类和特质,限制继承层级,只允许在同一源文件或同一包对象中定义的类进行继承。final
关键字用于修饰类、方法或字段,禁止被继承、重写或修改。private
/protected
关键字用于限制成员的访问权限。object
关键字用于创建单例对象,具有类的行为。case
关键字用于定义样例类,提供了模式匹配等功能。