I have a class like this:
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
}
}
I want to use this class, however I want to do different stuff in the constructor. The things that the constructor does I need to do them differently. But I want to use all the functionality of the other class methods.
I figured the easiest would be to extend the class. However when I do this, the constructor requires me to call the parent constructor:
super(url, something, whatever);
Is it possible to extend the base class but have a completely different constructor? I don't want the BaseClass constructor to be called at all...
解决方案
You must invoke a constructor of the superclass. If you don't explicitly call one, Java will attempt to call the no-argument constructor automatically; if there is no such, you will get a compile error. The constructor you call does not need to correspond to the arguments passed to the subclass' constructor.
This is mandatory - objects' member variables can be initialized in a constructor, and not calling one of them could violate the superclass' internal assumptions.
There is no way around this short of using JNI to break the JVM.