当前位置: 首页 > 面试题库 >

为什么构造函数不能是final,static或abstract?

田兴怀
2023-03-14
问题内容

为什么Java中的构造函数不能是final,static或abstract?

例如,您可以向我解释为什么这无效吗?

public class K {

    abstract public K() {
        // ...
    }
}

问题答案:

当您设置方法时,final其含义是: “我不希望任何类覆盖它。” 但是根据Java语言规范:

JLS
8.8-

“构造函数声明不是成员。它们从不继承,因此不受隐藏或覆盖。”

当您设置方法时,abstract其含义是: “此方法没有主体,应在子类中实现。”
但是,new使用关键字时会隐式调用构造函数,因此它不会缺少主体。

设置方法的static含义是: “此方法属于类,而不是特定的对象。” 但是构造函数被隐式调用以初始化对象,因此拥有静态构造函数没有任何目的。



 类似资料:
  • 问题内容: 据我所知,一个唯一可以做的事和一个不能做的事就是打电话给。 由于我们尚未调用,因此in 会在进入第一遍之前准备状态对象。本质上是相同的: 但是我看到了另一个有用的用例(在服务器端)。 让我们考虑一些异步的东西: 在这里,我们不能使用as分配来不会触发。 怎么样的?根据React docs : 在挂载发生之前立即调用。在之前调用),因此在此方法中设置状态不会触发重新渲染。避免在此方法中引

  • 本文向大家介绍请解释Java中的概念,什么是构造函数?什么是构造函数重载?什么是复制构造函数?相关面试题,主要包含被问及请解释Java中的概念,什么是构造函数?什么是构造函数重载?什么是复制构造函数?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JAVA构造函数 当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一

  • 在C#中,当我创建一个空类时,它提供了一个默认的构造函数,但是当我提供一个带有参数的构造函数时,默认的构造函数不再被创建。 我的问题是: 为什么编译器不再给我默认的构造函数呢 这些问题来自于WCF,我需要默认构造函数,但也希望能够为构造函数提供值,并且不必每次都放置默认构造函数,而且我不认为未使用的默认构造函数会使很多开销。

  • 问题内容: 必须使用无参数构造函数(像Hibernate这样的工具会在此构造函数上使用反射来实例化对象)。 我得到了这个手挥手的答案,但是有人可以进一步解释吗?谢谢 问题答案: hibernate,并且通常通过反射创建对象的代码用于创建类的新实例。此方法需要一个公共的无参数构造函数才能实例化该对象。对于大多数用例,提供无参数构造函数不是问题。 有一些基于序列化的技巧可以解决没有no-arg构造函数

  • 问题内容: 整个问题都在标题中。例如: 构造函数是细跟的缺省或修改,但如果考虑到给我一个编译器错误或改性剂。 问题答案: 将枚举视为具有有限数量实例的类。除了最初声明的实例外,再也没有其他实例了。 因此,您不能具有公共或受保护的构造函数,因为那样将允许创建更多实例。 注意:这可能不是官方原因。 但这对我来说最有意义。

  • 问题内容: 用于java.io.FileDescriptor.FileDescriptor()的 JavaDoc 说: 构造一个(无效的)FileDescriptor对象。 如果构造函数没有目的,为什么它的访问级别未声明为 package-private ? 问题答案: 此构造函数是公共的,因为它在之外使用。 在JRE 7u4 Linux x86中使用的类: 有一种方法允许程序员将a的状态更改为有