java - 如何在不使用 final 关键字的情况下使类不可扩展?

标签 java class

如果没有 final 关键字,我如何实现这一点?我必须对构造函数进行哪些更改?

 public final class testName {
     testName() {
        //do something
     }
 }

最佳答案

如果您将所有构造函数设为私有(private),那么该类也将不再是可扩展的。

public class TestName {

    private TestName(){do something}

}

要了解原因,请查看第 3.4.4.1 节,'The default constructor' .通过声明您的私有(private)默认构造函数,该段的最后一句话成立:

Such a [private] constructor can never be invoked from outside of the class, but it prevents the automatic insertion of the default constructor.

通过在父类(super class)中声明一个不可访问的构造函数非常有效,没有您的子类可以调用的(其他)构造函数,因此 Java 阻止了编译。

关于java - 如何在不使用 final 关键字的情况下使类不可扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6898277/

相关文章:

java - Spring中基于自定义注解的方法调用?

java - 如何将编码图像转换为.PNG?

java - 使用反射实例化实现特定接口(interface)的 Java 类

c++对象输出错误信息

c# - 构建 C# 类的最佳方式

java - 增加 createCompoundBorder 的厚度

java - 如何通过 Fiddler 强制 Java applet 的网络流量?

java - 使用playframework删除,更新mysql中的单个记录

Java类继承

c++ - 为二维 vector 类创建标量乘法运算符