有人可以請解釋我爲什麼如果我運行此代碼的輸出是[4,2]:null,而不是[4,2]:紫色? 我的理解是,問題出現在superClass的toString方法中。 事實上,如果從我的toString在子類中刪除「最後」的超類,並且編寫一個toString方法類似Java超級方法調用子類型重寫方法
public String toString() {
return this.makeName();
}
一切工作正常。 但我不太瞭解背後的概念。 是否存在某些關於此的內容?
謝謝你的時間。
public class Point {
protected final int x, y;
private final String name;
public 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;
}
}
ColorPoint.java:
public class ColorPoint extends Point {
private final String color;
public 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"));
}
}