04- 人有多大胆,地有多大产 到 按需分配 - sealed JDK17

java 对于继承和实现的权限控制做了进一步的升级,使用 sealed 关键字对继承和实现的子类进行了进一步的控制,从之前人有多大胆,地有多大产的野蛮接口继承滥用的情况,导致开发者对于自己的类失去了控制,对于之后的改造要顾及之前的使用情况导致的问题,到现在按需分配,限制继承和实现的类,又限制的开放了收口,达到双赢的局面。


	//密封接口Base 只能被H1 H2 继承
    sealed interface Base permits H1, H2 {  
    
    }  

   //H6 is not allowed in the sealed hierarchy  
//   class H6 implements Base {  
//    }

permits也是关键词,后面是允许进行集成的子类名称, 被其他的类进行实现的话,会进行报错。

//限制 只有H3 能够实现H1  
sealed interface H1 extends Base permits H3 {  
}  
  
final class H3 implements H1 {  
} 

密封类和接口,一定要有继承或者实现的子类,最终实现的类需要final关键词进行修饰,原因是final修饰的类,不能进行集成。从而达到按需分配的要求。

// non-sealed  脱离限制  
non-sealed interface H2 extends Base {  
  
}  
  
interface H4 extends H2 {  
}  
  
interface H5 extends H2 {  
}  
  
  
class C1 implements H4 {  
  
}

通过 non-sealed 关键词进行修饰的类或者接口,会拖离之前密封的限制,从而自由进行使用,这个就是说的收口,为什么还有non-sealed这种关键词,这样不是还是会进行滥用? 但是从某种角度上来说,他也是把收口都放到了H2上,从而到了限制范围的作用了。

之后的使用实践会在枚举里面看到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值