Интересный момент с Интуита:
можно использовать this не только как обращение к полям объекта класса, но и как обращение к конструктору (который вообще-то не имеет имени и извне доступен только с помощью ключевого слова new):
public class Vector {
private int vx, vy;
protected double length;
public Vector(int x, int y) {
super();
vx=x;
vy=y;
length=Math.sqrt(vx*vx+vy*vy);
}
public Vector(int x1, int y1,
int x2, int y2) {
super();
vx=x2-x1;
vy=y2-y1;
length=Math.sqrt(vx*vx+vy*vy);
}
}
можно записать короче:
public class Vector {
private int vx, vy;
protected double length;
public Vector(int x, int y) {
super();
vx=x;
vy=y;
length=Math.sqrt(vx*vx+vy*vy);
}
public Vector(int x1, int y1,
int x2, int y2) {
this(x2-x1, y2-y1); //можно использовать даже this(), если существует такой конструктор в этом классе!!!
}
}
Также первой строкой любого конструктора должно идти обращение к конструктору родительского объекта (super() ). Если такой строки нет, то компилятор по умолчанию ее добавляет с пустыми параметрами. Но! Если у родительского объекта нет конструктора с пустыми параметрами, то произойдет ошибка компиляции. Соответственно, создание любого объекта происходит как инициализация всех родителей, а затем возвращение ссылки на итоговый объект.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ