Конструкторы В конструкторе вы можете использовать его без точки для вызова другого конструктора.super
вызывает конструктор в суперклассе;this
вызывает конструктор в этом классе:
public MyClass(int a) {
this(a, 5); // Here, I call another one of this class's constructors.
}
public MyClass(int a, int b) {
super(a, b); // Then, I call one of the superclass's constructors.
}
super
полезно, если суперкласс должен инициализировать себя.this
полезно, чтобы вы могли писать весь жесткий код инициализации только один раз в одном из конструкторов и вызывать его из всех других, гораздо более простых в написании конструкторов.
Методы В любом методе вы можете использовать его с точкой для вызова другого метода.super.method()
вызывает метод в суперклассе;this.method()
вызывает метод в этом классе:
public String toString() {
int hp = this.hitpoints(); // Calls the hitpoints method in this class
// for this object.
String name = super.name(); // Calls the name method in the superclass
// for this object.
return "[" + name + ": " + hp + " HP]";
}
super
полезен в определенном сценарии: если ваш класс имеет тот же метод, что и ваш суперкласс, Java предполагает, что вы хотите использовать тот же класс в своем классе;super
позволяет вместо этого запросить метод суперкласса.this
полезен только как способ сделать ваш код более читабельным.