【发布时间】:2012-05-27 01:50:34
【问题描述】:
如果我有一个类,例如一个在构造函数中初始化的 HashMap,像这样......
public class MySuper{
HashMap<String,String> foo;
public MySuper(){
foo = new HashMap<String,String>();
}
}
我的印象(这是不正确的)是我只需要在子类中调用 super 并且会进行相同的初始化,但是 Eclipse 对以下语法不满意...
public class MySub extends MySuper{
public MySub(){
super.MySuper()
}
}
所以,我很好奇这样做的正确方法是什么。我是否必须在 MySuper 中创建一个单独的方法来进行初始化并调用 super ? (我知道这会起作用),但我的印象是有一种方法可以在我要扩展的类上调用 super 并让它执行它通常在其构造函数中执行的任何操作。
TIA
【问题讨论】:
-
有人强烈反对它(荒谬),但我赞成它,所以现在它为零。希望有人会提醒那个人,曾经他/她也是初学者,就像我们所有人一样。
-
正如其他人所说,您遇到的主要问题(除了缺少
;之外,您应该调用super而不是super.MySuper。而且,也如上所述,您确实不需要显式调用super,除非您需要提供与子构造函数的参数列表不同的参数列表。 -
(我总是要花点时间才能记住,Java 只是
super—— 太多的语言在我脑海中转来转去,而且它们的表现各不相同。) -
是的......我总是对这些反对票中的一些人是多么卑鄙而感到惊讶!我的意思是......这是一个完全合理的问题,我努力表明我已经四处寻找并试图自己弄清楚,但真的......不是这个网站的全部意义在于让每个人都免于重新发明每辆自行车?碰巧,我*不是初学者......我只是不太使用 Java,并且对这里的语法很感兴趣。无论如何......我真的很感谢你的帮助!谢谢大家。
-
(抱歉跑题了,请注意@Dr.Dredel:我并不是说您通常是初学者,只是从某种意义上说您有点不熟悉Java实践-只是就像我几个月前一样,直到我需要刷新/学习它;如果一个人不使用一种语言,那么他不练习是很正常的;所以反对票的人真的是狭隘的 IMO。(话题结束)
标签: java subclassing super