当前位置: 首页 > 工具软件 > Java-Sparrow > 使用案例 >

java 17 新特性:密封类

仲孙凡
2023-12-01

java 17 新特性:密封类

继承中, 需要明确, 可以随意的继承 。 为了限制肆无忌惮的继承, 产生了密封类。
特点:指定某些类可以继承。
语法

sealed class 类名 permits 子类{}

每个被允许的子类都需要使用修饰符来描述如何往下传递密封行为。
一共有3种选择:

  1. final修饰的类:声明为final来禁止继续继承
final 子类 类名 extends 父类{}
  1. 子类声明自己是密封类:声明为sealed以同样的方式来限制继承
sealed class 类名 extends 父类 permits 子类{}
  1. 子类声明自己不再是一个密封类了:声明为non-sealed来恢复开放继承
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{
}

 类似资料: