implicit super constructor Dialog() is undefined

先贴上部分源码:
public class MyFindDialog extends Dialog implements ActionListener
{
private Label lFind, lReplace;
private TextField tFind, tReplace;
private Button bFind, bReplace;
private TextArea ta;

public MyFindDialog()
{
/*
* 这里要调用一下父类的构造方法
* 原因个人觉得是:因为父类Dialog没有提供一个空的构造方法,
* 而编译器只可能帮我们自动调用那些空的构造方法(因为如果调用非空构造方法的话,编译器不知道为我们传什么参数)
* 所以我们只有在子类显示的调用这个方法。
*/
super(new Frame());
在没有super(new Frame());这行代码报错如下:
implicit super constructor Dialog() is undefined, must explicitly invoke another constructor.
这是在写java程序,用到了继承时遇到的一个问题,虽然英文比较容易懂,但是当时感觉自己挺笨的,竟然对这个问题没有什么解决办法。回去之后,心里还是对那个问题念念不忘。仔细分析这句错误提示发现了解决方法。
这句错误提示的中文意思是:不明确的父类构造方法Dialog()(这里是Dialog因为我是从这个类继承的),没有定义,请明确调用另一个构造方法。
解决方法是:我查看了API,Dialog没有这个Dialog()构造方法,虽然我们知道如果一个类没有提供构造方法时,才会自动的为我们提供一个空的构造方法,但是因为Dialog()有其他的构造方法,所以那个默认的空的构造方法就不存在了(除非你自己显示的提供了一个空的构造方法)。好了这就到了问题的关键,既然Dialog没有空的构造方法,而编译器只会为我们自动的调用参数列表为空的构造方法,那么在我的代码里面必然会报错。此时,需要我们显示的调用一下父类的构造方法,然后问题得到解决。
然后说点这个Dialog类没有空构造方法原因,因为Dialog必须依托于一个组件而存在,我们的构造方法必然要指定这个Dialog的父亲是谁,空的构造方法怎么去指定这个父亲组件呢?然后你知道答案了....

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25701553/viewspace-697932/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25701553/viewspace-697932/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值