在Java中如何避免不使用final关键字的子类
如何防止在不使用在Java中如何避免不使用final关键字的子类,java,Java,如何防止在不使用final关键字的情况下创建子类 在上面的代码中,如何防止在不使用“final”的情况下创建子类 关键词 您可以声明私有构造函数以避免创建对象 final class AbsTest {} class BTest extends AbsTest {} 以下是几个选项 创建私有构造函数 将每个方法设置为最终,这样人们就不能覆盖它们。这样可以避免意外地从子类调用方法。但这并没有停止子类化 将检查放入类的构造函数中: if(this.getClass()!=abc.class)
final
关键字的情况下创建子类
在上面的代码中,如何防止在不使用“final”的情况下创建子类
关键词
您可以声明私有构造函数以避免创建对象
final class AbsTest {}
class BTest extends AbsTest {}
以下是几个选项
- 创建私有构造函数
- 将每个方法设置为最终,这样人们就不能覆盖它们。这样可以避免意外地从子类调用方法。但这并没有停止子类化
- 将检查放入类的构造函数中: if(this.getClass()!=abc.class) { 抛出新的RuntimeException(“不允许子类”); }
但是提供了
final
来解决这样的问题,我必须说,最好使用final
如果这两个类都是内部类并且它们共享同一个父类,那么这将不起作用,在这种情况下,使用final
是唯一的选项。。。你为什么要这么做?正如到目前为止的答案中所指出的那样,对于某些条件是有办法的,但最终结果的产生是有原因的
private AbsTest() {
}