gpt4 book ai didi

Java:得到意外的输出

转载 作者:行者123 更新时间:2023-11-30 03:31:25 25 4
gpt4 key购买 nike

我正在学习 Java,并且得到了意想不到的输出。这就是代码:

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;
}
}
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,"viola"));
}
}

输出为:[4,2]:null
为什么?不应该只是 [4,2] 因为变量 String name 首先在 Point 类的 makeName() 方法中初始化,并且那么应该变得不可变吗?我错了吗?

最佳答案

在设置 this.color = color 之前调用 makeName() 方法;

当颜色变量仍为 null 时,您的 super.constructctor 会调用 makeName() 方法。

关于Java:得到意外的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28918415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com