Java - 你可以覆盖一个没有调用父类构造函数的类吗?

Jak*_*son 2 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
  }
}
Run Code Online (Sandbox Code Playgroud)

我想使用这个类,但是我想在构造函数中做不同的东西.构造函数所做的事情我需要以不同的方式完成它们.但我想使用其他类方法的所有功能.

我认为最简单的方法是扩展课程.但是,当我这样做时,构造函数要求我调用父构造函数:

super(url, something, whatever);
Run Code Online (Sandbox Code Playgroud)

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

Bor*_*lid 8

您必须调用超类构造函数.如果没有显式调用,Java将尝试自动调用无参数构造函数; 如果不存在,则会出现编译错误.您调用的构造函数不需要与传递给子类的构造函数的参数相对应.

这是强制性的 - 对象的成员变量可以在构造函数中初始化,而不调用其中一个可能会违反超类的内部假设.

没有办法解决使用JNI破坏JVM的问题.