我有以下封装接口(Java 15):
public sealed interface Animal permits Cat, Duck {
String makeSound();
}
这个接口被2个类实现:
public final class Cat implements Animal {
@Override
public String makeSound() {
return "miau";
}
}
public non-sealed class Duck implements Animal {
@Override
public String makeSound() {
return "quack";
}
}
有人能告诉我final
和non-sealed
之间的区别吗?final
阻止我创建其他子类,但是non-sealed
对Duck
应用了什么行为?
final
类永远不能被子类化(旧功能)。一个non-sealed
类是特别开放一个类来被子类化的,当它的基类是sealed
时需要这样做。 - Andreas