最近、潜在的な仕事のテストで次のコードがありました。
class Point {
protected final int x, y;
private final String name;
Point(int x, int y) {
this.x = x;
this.y = y;
name = makeName();
}
protected String makeName() {
return "[" + x + "," + y + "]";
}
public final String toString() {
return name;
}
}
public class ColorPoint extends Point {
private final String color;
ColorPoint(int x, int y, String color) {
super(x, y);
this.color = color;
}
protected String makeName() {
return super.makeName() + ": " + color;
}
public static void main(String[] args) {
System.out.println(new ColorPoint(4, 2, "purple"));
}
}
このテストでは、プログラマーが何を出力するつもりだったのかを尋ねましたが、それは [4, 2]: 紫でした。また、[4: 2]: null である、実際に出力されるものも尋ねました。私が知りたいのは、その理由です。