java 17 新特性:密封类

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{
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值