gpt4 book ai didi

java - 扩展 JFrame - "super"关键字如何工作?

转载 作者:行者123 更新时间:2023-11-30 07:00:07 25 4
gpt4 key购买 nike

我创建了一个扩展 JFrame 的类,并在我的类构造函数中设置标题,我可以使用:

super("title");
setTitle("title");

或者只是创建一个 JFrame 对象即:

JFrame f = new JFrame("title);

编译器如何从所有这些中区分出来得出同样的结论?我知道 super 用于调用父类(super class)中重写的方法,但它如何具体知道调用 setTitle 方法?

我的想法是 super 调用 JFrame 类的构造函数,并且只有一个构造函数接受一个字符串参数,所以它基本上是这样的:JFrame f = new JFrame("title);,没有显式创建对象。

这是真的吗?如果不是,谁能解释一下 super 到底在做什么,为什么 setTitle 不需要对象引用?

干杯

最佳答案

  1. new JFrame( "title") 调用 JFrame 的构造函数。它可能会调用 setTitle()(但它可能不会),或者它可能只是设置用于保存标题的内部变量。

  2. super.setTitle() 只是一个方法调用。如果您覆盖了 setTitle(),它将忽略您的定义并在父类(super class)上调用相同的方法。它通常用于“链接”到父类(super class)的方法。

  3. super( "title") 只能作为构造函数的第一行调用。它不是方法调用。它调用父类(super class)中的特定构造函数,构造该对象,然后继续您的构造函数代码。这是所有构造函数的工作方式。如果您不指定构造函数,则自动调用无参数构造函数 (super())。

关于java - 扩展 JFrame - "super"关键字如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30872389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com