Java 中的 sealed 是什么?用代码举例
Topic source在 Java 15 中,sealed 是一个新的关键字,用于限制哪些类可以继承或实现一个特定的类或接口。一个 sealed 类或接口明确声明它允许什么样的子类存在,然后使用 sealed 关键字来规定这些子类必须显式地继承该类或接口。
以下是一个使用 sealed 的例子:
```
public abstract sealed class Shape permits Circle, Square, Triangle {
// ...
}
public final class Circle extends Shape {
// ...
}
public final class Square extends Shape {
// ...
}
public final class Triangle extends Shape {
// ...
}
```
在这个例子中,Shape 是一个抽象 sealed 类,明确说明只有 Circle、Square 和 Triangle 这三个继承类可以存在。这三个子类都必须显式地继承 Shape 类。如果有其他类试图继承 Shape 类,就会在编译时出错。
在Java中,sealed
是一个关键字,用于限制类的继承结构。使用sealed
关键字修饰的类具有两个特点:
- 只有相同模块内的类可以继承该类;
- 子类必须在声明时使用
permits
关键字指定允许继承的子类,而非继承关键字extends
。
下面是一个代码示例:
public sealed class Animal permits Dog, Cat {
// ...
}
public final class Dog extends Animal {
// ...
}
public final class Cat extends Animal {
// ...
}
public class Tiger extends Animal {
// Error: Tiger is not permitted to extend Animal
}
在上面的示例中,Animal
类被sealed
关键字修饰,而Dog
和Cat
类使用了permits
关键字指明它们是允许继承Animal
类的。而Tiger
类没有被允许继承Animal
类,所以会出现编译错误。
- 1
🌙