重写父类构造函数 java,Java-您可以重写类而不调用父类构造函数吗?

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值