我有一个关于Java this和超级关键字的问题,让我们举几个例子
Firts示例
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();
}
}
哪个更好,为什么?感谢您的回答
只有在真正需要的时候才使用super
。如果重写setSize()
,那么第二个示例将不会调用重写的方法。这不一定是所需的行为,因此通常应该只调用不带super
前缀运算符的方法。通常情况下,最好编写这样的代码,即可以对其进行扩展或维护,而不必担心某些重写是否真的会从某些方法重写。另请参阅Vulcan关于该问题无效的评论。