Код: Выделить всё
public class Complex {
private int real, imag;
Complex(int r, int i) {
real = r;
imag = i;
}
public static Complex add(Complex c1, Complex c2) {
return new Complex(c1.real + c2.real, c1.imag + c2.imag);
}
public String toString() {
return real + "+i" + imag;
}
public static void main(String[] args) {
Integer.parseInt("5");
System.out.println(Complex.add(new Complex(2, 3), new Complex(3, 4)));
}
}
Итак, в этом смысле должна быть ошибка компилятора. Но оно не возражает.
Теперь, насколько я понимаю, это разрешено, потому что
- c1. реальный код пишется в теле самого закрытого класса Complex.
- Разработчик сложного класса должен иметь доступ ко всем членам экземпляра [будь то частный, защищенный что угодно] при доступе через ссылку на объект, поскольку разработчик очень хорошо знает, что он делает, в отличие от любой третьей стороны. Вот почему здесь не используется объектно-ориентированная модель модели.
Подробнее здесь: https://stackoverflow.com/questions/995 ... rd-in-java