当前位置: 首页 > 知识库问答 >
问题:

为什么它是超级的。画(g)而不是这个。油漆(g)?

闻人景澄
2023-03-14

只是一个关于继承的理论问题。

假设我有一个类“GamePanel”,它扩展了JPanel。

我知道在课堂上,如果我调用super。绘制(g),它将调用父类(JPanel)绘制方法。

但是如果我创建一个对象GamePanel,它不应该继承所有的JPanels方法吗?那么在这种情况下,为什么不这个呢。油漆(g)工作?当前对象应该能够访问该方法,对吗?

如果没有,为什么会这样做。setBackgroundColor(…) 工作?

因为显然是这个。setBackgroundColor(…) 和超级代码一样有效。setBackGroundColor(…) 。这就好像“超级”可以访问所有的方法,而“这个”不能?


共有1个答案

訾凯歌
2023-03-14

如果您在子类中重新定义,这很重要...您需要在您的方法中找到一种方法来调用祖先方法,否则它只能像递归一样从该方法中调用自己...

 类似资料:
  • 我正在用Java开发一个俄罗斯方块克隆,在我想要清除整行并删除上面的所有内容之前,一切似乎都正常工作。虽然我所有的数据都正确地表示了转换,但我的paintComponent方法似乎只清除了行,但上面显示的所有内容都保持在repaint()调用之前的状态。新的碎片将穿过幻影积木,落在最下面一排的隐形积木上,上面的碎片会落在那里。 这是我的油漆成分方法: 这是计时器侦听器中actionPerforme

  • 问题内容: 对于Java的处理方式以及涉及到的数字和其他类型的数字,我有些困惑。例如: 输出(也许您应该先猜测一下): 这不能编译是可以预料的,是不同的对象。 令我有些惊讶的是,默认情况下9是an ,并且1)甚至没有编译。请注意,您不能将放入期望使用的方法中,但是在这里它们是相等的。 由于两个相同的原因,这令人惊讶,但似乎更糟。 不足为奇,因为自动装箱到和。 不足为奇,因为不同类中的对象不应该是。

  • 当我只运行预处理器时,输出文件包含20。 然而,据我所知,预处理器只是进行文本替换。所以这就是我认为正在发生的事情(这显然是错误的,但idky): NUM被定义为10 所以我认为输出应该是10而不是20。有什么能解释出哪里出了问题吗?

  • 如果我运行deldeldel(“adel”),它会返回一个,但是,adel的长度是4,这意味着最后一个字符串索引是3,为什么str.substring(4,str.length()没有超出范围?

  • 这是我的代码,当它应该输出7时,它输出0。非常感谢您在这里提供的任何帮助(我必须使用continue和for语句,不允许使用while语句作为必需品)。

  • 我试图理解背后的动机。如果已经存在类型类和,为什么有必要呢? 诚然,的实例是具体的类型,而的实例需要一个类型参数。(有关有用的解释,请参见Monoid vs MonadPlus。)但是你不能重写任何类型的约束吗 作为和的组合? 从。它的实施是: 我只能使用和实现它: 有人能澄清和之间的真正区别吗?