JAVA中的super()函数

JAVA中的super()函数,java,super,Java,Super,按钮类别: class SubmitButton extends JButton implements ActionListener { public SubmitButton(String title){ super(title); .... 我在此声明: SubmitButton submit = new SubmitButton("Submit"); submit.setBounds(530+150, 200, 100, 25); 超级(标题)如

按钮类别:

class SubmitButton extends JButton implements ActionListener {
    public SubmitButton(String title){
        super(title);
        ....
我在此声明:

SubmitButton submit = new SubmitButton("Submit");
submit.setBounds(530+150, 200, 100, 25);
超级(标题)如何将字符串标题设置为按钮的标题?它如何与常规jbutton的.setText()方法相同?

换句话说,调用super()如何做与.setText()相同的事情 super()如何知道更改标题?.setText()是JButton类中唯一将字符串作为参数的方法吗?

(复制粘贴整个URL;由于某些原因,字符串部分未链接)


它正在调用上面链接的JButton类中定义的构造函数,该类将按钮的文本设置为传入的字符串。super()是对超类构造函数的调用。

JButton是一个支持多个构造函数的中心Java Swing类。其中一个构造函数允许您设置按钮标签的文本

添加super(title)实际上并没有进行调用-父级的构造函数无论如何都会被调用,但它有助于选择调用哪个构造函数


setText()操作允许您在创建按钮后但(通常)在显示之前更改文本。

当使用构造函数SubmitButton(字符串标题)初始化SubmitButton时,可以使用标题调用父类/超类构造函数。如果没有指定super(title),那么Java编译器将自动插入代码以调用super类的默认构造函数。然后,在创建SubmitButton时不会设置标题

此外,超类(JButton)可能在其构造函数中使用.setText(字符串),这就是它执行相同函数的原因(需要查看实际的Java源代码)


  • SubmitButton扩展了JButton
  • JButton有一个构造函数,它可能如下所示(简化):

  • SubmitBUtton有一个构造函数:

    public SubmitButton(String title) {
        super(title);
    }
    
SubmitButton构造函数正在调用超类(JButton)构造函数,后者又在调用setText。现在在内部,JButton的工作方式可能不同,但效果是一样的


总的来说,super(…)调用超类构造函数。

在java中的所有情况下,“调用”super()调用父类的构造函数。与所有函数一样,当您调用一个ctor时,Java模式匹配名称和参数类型
JButton
声明了一个带有字符串参数的ctor,因此当您调用
super(title)
时,其效果是您正在调用立即超类(JButton)的构造函数,该类使用单个字符串参数。

我个人通过设置标题而不是文本来解决这个问题

静态字符串TitleName=“Some Title”; 超级(标题名)

然后在你的按钮上或任何应该发生动作的地方

设定所有权(“新所有权”)


这对我有用。:-)

一个很好的解释。我通常觉得这些问题很难回答。谢谢。我曾经教OOP给学生,所以我经常遇到这些问题。我正在寻找JavaDoc的链接和我的解释。我从来都不够快。另一个很好的解释。你们真是好老师。首先,我想提出一些有问题的修改,你们把super()称为函数,但它是方法。
public SubmitButton(String title) {
    super(title);
}