继承中, 需要明确, 可以随意的继承 。 为了限制肆无忌惮的继承, 产生了密封类。
特点:指定某些类可以继承。
语法
sealed class 类名 permits 子类{}
每个被允许的子类都需要使用修饰符来描述如何往下传递密封行为。
一共有3种选择:
final 子类 类名 extends 父类{}
sealed class 类名 extends 父类 permits 子类{}
non-sealed class 类名 extends 父类{}
示例
/**
* 利用关键词sealed来声明密封类 Animal
* 用permits表示只有Pig,Dog,Birds类可以继承Animal
*/
public sealed class Animal permits Pig,Dog,Birds{
}
/**
*每个被允许的子类都需要使用修饰符来描述如何往下传递密封行为
* 声明为 final 来禁止继续继承。
*/
public final class Pig extends Animal{
}
/**
* 每个被允许的子类都需要使用修饰符来描述如何往下传递密封行为
* 声明为 sealed 以同样的方式来限制继承。
*/
public sealed class Birds extends Animal permits Sparrow{
}
/**
* 每个被允许的子类都需要使用修饰符来描述如何往下传递密封行为。
* 声明为 non-sealed 来恢复为开放继承。
*/
public non-sealed class Dog extends Animal{
}