密封类

阿简
2024-08-03 / 0 评论 / 5 阅读 / 正在检测是否收录...

Java 9 引入了密封类(Sealed Classes),旨在提供更严格的类型安全和更好的代码封装性。

# Java 密封类

## 概述
密封类是一种新的类类型,它允许限制继承它的类必须在同一个包中,或者必须是指定的某些类。这有助于限制类的使用,提高代码的安全性和可维护性。

## 语法
要声明一个密封类,可以使用 `sealed` 关键字:

sealed class Shape permits Circle, Square, Rectangle {}


在这个例子中,`Shape` 是一个密封类,它只允许 `Circle`、`Square` 和 `Rectangle` 三个类继承。

## 特点
- **包限制**:密封类可以限制继承它的类必须在同一个包中。
- **继承限制**:密封类可以指定继承它的类必须是特定的几个类。
- **非密封子类**:密封类可以有非密封的子类,但这些子类不能被其他类继承。

## 使用场景
- 当你想要限制类的继承结构时。
- 当你想要确保类的实现是封闭的,防止未来被错误的扩展。

## 例子

package shapes;

sealed class Shape permits Circle, Square, Rectangle {}

final class Circle extends Shape {

void draw() {
    System.out.println("Drawing a circle");
}

}

class Square extends Shape {

void draw() {
    System.out.println("Drawing a square");
}

}

class Rectangle extends Shape {

void draw() {
    System.out.println("Drawing a rectangle");
}

}


在这个例子中,`Shape` 类被密封,并且只有 `Circle`、`Square` 和 `Rectangle` 可以继承它。

## 注意事项
- 密封类不能是 `public`,因为如果它是 `public`,则任何包都可以访问并继承它。
- 密封类和它的子类必须在同一个包中,或者子类必须被明确地用 `permits` 子句列出。
- 密封类可以提高代码的封装性,但也限制了类的使用灵活性。

0

评论

博主关闭了当前页面的评论