我有一个关于Java和超级关键字的问题,让我们来看一些例子
第一个例子
import java.awt.*;
public class Main extends Frame {
//constructor of the class
public Main () {
super ("My frame");
setSize (200,100);
setVisible (true);
}
public static void main (String [] args) {
new Main ();
}
}
第二个例子
import java.awt.*;
public class Main extends Frame {
//constructor of the class
public Main () {
//here the difference from example 1
super ("My frame");
super.setSize (200,100);
super.setVisible (true);
}
public static void main (String [] args) {
new Main ();
}
}
哪个例子更好,为什么?
现在让我们举一些关于这个关键字的例子
public class Main {
public void print () {
System.out.println ("Hi");
}
public static void main (String [] args) {
print();
}
}
第二个例子
public class Main {
public void print () {
System.out.println ("Hi");
}
public static void main (String [] args) {
//here the difference
this.print();
}
}
哪个更好,为什么? 谢谢你的回答
答案 0 :(得分:2)
仅在您确实需要时才使用super
。如果您覆盖setSize()
,那么您会发现第二个示例不会调用您重写的方法。这不一定是期望的行为,因此您通常应该在没有super
前缀运算符的情况下调用方法。通常最好编写代码,使其可以扩展或维护,而不必担心某些覆盖是否会实际覆盖某些方法。另请参阅Vulcan的评论,使问题无效。