У меня вопрос о Java это и супер ключевые слова, давайте взять некоторые примеры
Пример 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, который делает проблему нулевой и пустой.
setSize
илиsetVisible
вMain
, потому чтоsuper.XXX
явно вызовет метод, как это определено в классеFrame
. С учетом вышесказанного, соглашение заключается в использованииsuper
только при необходимости.