Java - 你可以重写一个类而不调用父类构造函数吗?

标签 java inheritance

我有这样一个类:

public class BaseClass
{
  public BaseClass(URL url, String something, String whatever)
  {
    // Do some stuff with URL, something and whatever
  }

  public List ImportantFunction()
  {
    // Some important stuff here
  }
}

我想使用这个类,但是我想在构造函数中做不同的事情。构造函数所做的事情我需要以不同的方式进行。但我想使用其他类方法的所有功能。

我认为最简单的方法是扩展类(class)。但是,当我这样做时,构造函数要求我调用父构造函数:

super(url, something, whatever);

是否可以扩展基类但具有完全不同的构造函数?我根本不想调用 BaseClass 构造函数...

最佳答案

您必须调用父类(super class)的a 构造函数。如果你不显式调用一个,Java 将尝试自动调用无参数构造函数;如果没有这样的,你会得到一个编译错误。您调用的构造函数不需要与传递给子类构造函数的参数相对应。

这是强制性的——对象的成员变量可以在构造函数中初始化,不调用其中一个可能会违反父类(super class)的内部假设。

没有办法绕过使用 JNI 来破坏 JVM。

关于Java - 你可以重写一个类而不调用父类构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9074459/

相关文章:

java - 最大和子数组

java - 从内部类访问变量而不将其设为最终变量

javascript - 有没有一种工具可以创建我的 javascript 代码层次结构的可视化表示

swift - 协议(protocol)子类实现

继承QWidget的Javascript对象

java - GridBagLayout,消失的JList

java - 使用现有证书、中间文件和远程创建的签名,使用 itextpdf for Java 对 PDF 进行两步签名

java - 使用静态方法或来自初始化对象的方法来处理 OpenGL 内容?

Javascript继承与简洁的原型(prototype)赋值语法

java - 从子类对象访问超字段