sealed class
Sealed クラスとインターフェイスは、他のどのクラスやインターフェイスがそれらを拡張または実装できるかを制限します。
permits句は、シールされたクラスを拡張できるクラスを指定します。
sealed classの宣言
public sealed class Person permits Student, Teacher, Worker {
}
許可されるサブクラスの制約
- final: Cannot be extended further
- sealed: Can only be extended by its permitted subclasses
- non-sealed: Can be extended by unknown subclasses; a sealed class cannot prevent its permitted subclasses from doing this
許可されるサブクラスの宣言
non-sealed class Teacher extends Person {
}
final class Student extends Person {
}
sealed class Worker extends Person permits RailwayWorker {
}
final class RailwayWorker extends Worker {
}