Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中如何避免不使用final关键字的子类_Java - Fatal编程技术网

在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() {

}