如何控制哪些类可以扩展我的Java类

fkvaft9z  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(242)

所以我在面试中被问到这个问题,如果我有一个类A,我如何限制哪些类能够扩展A。例如,如果我只希望C和E类能够扩展A,而B和D类不应该这样做。我提到了泛型中的有界通配符,但我认为这并没有回答这个问题。我不知道新版本的Java中添加了什么新功能。请告诉我正确答案是什么。

vhmi4jdf

vhmi4jdf1#

Sealed classes似乎是限制哪些类可以扩展另一个类的一种方法。此功能自Java 17起可用。
禁忌:

  • 所有允许的子类必须与密封类属于同一个模块。
  • 每个允许的子类必须显式地扩展密封类。
  • 每个允许的子类都必须定义一个修饰符:最终的、密封的或非密封的。

示例:

public abstract sealed class Vehicle permits Car, Truck {...}

这限制了只有类Car或Truck可以扩展Vehicle。

相关问题