📅  最后修改于: 2023-12-03 15:39:08.971000             🧑  作者: Mango
在Java 15中,密封接口成为了新的功能,这使得类能够限制其他模块在其继承层次结构上的扩展。对于那些需要使用继承的类,如框架/库/工具包,密封接口通常是很有用的。
密封接口是一个接口,它可以声明它的实现者,这进一步限制了实现者的数量。有了密封接口,类不能简单地给自己添加子类,而是必须在密封接口声明的子集中进行。
【代码示例】
public sealed interface Animal
permits Dog, Cat {
void makeSound();
}
在这个例子中,继承了Animal接口的类必须在Dog和Cat之间进行选择。
Java 15还引入了密封类。密封类可以限制其他模块在其继承层次结构上的扩展。密封类使用sealed关键字进行声明。
【代码示例】
public sealed class Vehicle
permits Car, Bike {
void drive();
}
public final class Car extends Vehicle {
void drive() { System.out.println("Driving a car"); }
}
public non-sealed class Bike extends Vehicle {
void drive() { System.out.println("Driving a bike"); }
}
在这个例子中,Vehicle是一个密封类,它只允许Car和Bike两个类作为其扩展。Car是一个final类,不能被子类扩展,而Bike是一个非密封的类,可以被其他模块扩展。
Java 15中的密封接口和密封类可以帮助Java程序员更好地管理其代码库并减少缺陷。它们是Java 15的一个新功能,可以帮助开发人员更好地组织和限制继承。这两个新功能可以提高代码的可维护性和可读性,也可以帮助开发人员更好地控制其代码库。