我是 Java 新手。最近Java测试中有一个问题不太明白,希望大家能帮帮我。
分析以下代码:
class Circle {
private double radius;
public Circle(double radius) {
radius = radius;
}
}
答案如下:
A) 程序可以编译,但无法创建具有指定半径的 Circle 对象。该对象的半径始终为 0。
B) 程序出现编译错误,因为无法将半径赋值给半径。
C) 该程序有编译错误,因为它没有 main 方法。
D) 程序无法编译,因为 Circle 没有默认构造函数。
在我看来,我认为A是正确的。 B 显然是错误的,因为你当然可以完成作业。 C 是错误的,因为没有 main 方法是完全可以的。 D 也是错误的,因为默认构造函数不是必需的。这给我留下了 A。
不太明白A的写法,我觉得这段代码可以改成:
this.radius = radius;
正确。
谁能帮我澄清一下吗?非常感谢!
最佳答案
从字面上看,A是正确的。
程序可以编译,但无法创建具有指定半径的 Circle 对象。该对象的半径始终为 0。
您仍然可以创建Circle
对象,但其半径始终为0。这意味着,您分配了错误的声明。
在此构造函数中:
public Circle(double radius) {
radius = radius;
}
您仅将 radius
参数分配给其自身,这意味着您实际上并未将其传递给类变量 radius
。这就是为什么您使用 this
来归属类成员
。
因此正确的声明是将radius参数变量
传递给radius类变量
。
this.radius = radius;
关于Java类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41092189/