开发者

JDK17中Sealed Classes的使用

开发者 https://www.devze.com 2025-08-09 11:33 出处:网络 作者: 考虑考虑
目录前言密封类密封类示例总结前言 Sealed Classes密封类,在JDK15已经开始预览,在JDK16做了第二次预览,到了JDK17转正
目录
  • 前言
  • 密封类
  • 密封类示例
  • 总结

前言

Sealed Classes密封类,在JDK15已经开始预览,在JDK16做了第二次预览,到了JDK17转正

密封类

密封类可以理解为限制继承类,可以指定该类只能被某些子类继承,

语法类似如下: 类被 sealed 修饰,只允许(permits)类继承,继承的类必须有 final 或者 no-sealed 来修饰

密封类示例

1、定义一个密封类或者抽象密封类

public sealed class HelloService permits AClass, BClass, CClass {

    public String say() {
        return "say";
    }
}

这样写的话,就代表该密封类只能被AClass, BClass, CClass继承

public final class AClass extends HelloService {


    @Override
    public String say() {
        return "hello worldjs";
    }
}
public final class BClass extends HelloService {


    @Override
    public String say() {
        return "hello world";
    }
}
public non-sealed class CClass extenhttp://www.devze.comds HelloService {

    public String say() {
        return "say";
    }
}

继承的子类需要使用final修饰,表示不可再被继承,如果子类还需要被继承,那么就是用non-sealed修饰

3、抽象密封类

public abstvSihncra编程客栈ct sealed class HelloService2 permits DClass {

    abstract String say();
}
public final class DClass extends HelloService2 {
    @Override
    String say() {
        return "";
    }
}

总结

Sealed类,提供了一种机制来精确控制类的继承链,使得更好的编码,不过就是需要升级JDK版本,看个人使用

到此这篇关于JDK17中Sealed Classes的使用的文章就介绍到这了,更多相关JDK17 Sealed Classes内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客vSihnc栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号