关于在 java 中使用构造函数和方法以及为什么构造函数不起作用的简单问题
Simple question on using constructers and methods in java and why the constructor isn't working
我刚开始学习 OOP、构造函数和 class 方法。我的问题是,当我的构造函数被调用并且给定的值不起作用时。将创建一个对象,但创建它的值似乎不起作用或 'apply'。也许代码会更好地解释它。我的圈子class是这样的:
public class MyCircle {
double radius;
public MyCircle() {
}
public MyCircle(double radius) {
}
final double pi = 3.14159;
public double getRadius() {
return radius;
}
public double getCircumference() {
return radius*pi;
}
public double getArea() {
return radius*radius*pi;
}
}
这对我来说似乎没问题,但是当我尝试通过测试使用它时 class 像这样:
public class MyCircleTest {
public static void main(String[] args) {
double radius = 26.5;
MyCircle myCoolCircle = new MyCircle(radius);
System.out.println("Circumference of myCoolCircle: " + myCoolCircle.getCircumference() );
System.out.println("Area of myCoolCircle: " + myCoolCircle.getArea());
输出为:
myCoolCircle 的周长:0.0
myCoolCircle 的面积:0.0
它好像没有正确构建,我不知道为什么。
感谢任何帮助。
使用这个。
public MyCircle(double radius) {
this.radius = radius
}
实际上,构造函数只是一种方法。这不是巫毒魔法;方法有参数。参数不是特别有用,除非您实际使用它们。您的字段(名为 radius
)和构造函数的参数(也名为 radius
)之间绝对没有 link。
如果您希望构造函数的操作是:“获取此参数的值,并将其分配给半径字段”,那么您必须这样写:
public MyCircle(double radius) {
this.radius = radius;
}
请注意,我们必须使用 this.radius
来引用该字段,因为参数名称 radius
'shadows'(否则无法访问)也被命名的字段radius
。然而,这是惯用的 java.
您似乎没有将 radius
的传递值分配给构造函数参数。 Java 不会将变量分配给构造函数参数本身。
尝试像 this
关键字一样分配它。
public MyCircle(double radius) {
this.radius = radius;
}
我刚开始学习 OOP、构造函数和 class 方法。我的问题是,当我的构造函数被调用并且给定的值不起作用时。将创建一个对象,但创建它的值似乎不起作用或 'apply'。也许代码会更好地解释它。我的圈子class是这样的:
public class MyCircle {
double radius;
public MyCircle() {
}
public MyCircle(double radius) {
}
final double pi = 3.14159;
public double getRadius() {
return radius;
}
public double getCircumference() {
return radius*pi;
}
public double getArea() {
return radius*radius*pi;
}
}
这对我来说似乎没问题,但是当我尝试通过测试使用它时 class 像这样:
public class MyCircleTest {
public static void main(String[] args) {
double radius = 26.5;
MyCircle myCoolCircle = new MyCircle(radius);
System.out.println("Circumference of myCoolCircle: " + myCoolCircle.getCircumference() );
System.out.println("Area of myCoolCircle: " + myCoolCircle.getArea());
输出为:
myCoolCircle 的周长:0.0
myCoolCircle 的面积:0.0
它好像没有正确构建,我不知道为什么。
感谢任何帮助。
使用这个。
public MyCircle(double radius) {
this.radius = radius
}
实际上,构造函数只是一种方法。这不是巫毒魔法;方法有参数。参数不是特别有用,除非您实际使用它们。您的字段(名为 radius
)和构造函数的参数(也名为 radius
)之间绝对没有 link。
如果您希望构造函数的操作是:“获取此参数的值,并将其分配给半径字段”,那么您必须这样写:
public MyCircle(double radius) {
this.radius = radius;
}
请注意,我们必须使用 this.radius
来引用该字段,因为参数名称 radius
'shadows'(否则无法访问)也被命名的字段radius
。然而,这是惯用的 java.
您似乎没有将 radius
的传递值分配给构造函数参数。 Java 不会将变量分配给构造函数参数本身。
尝试像 this
关键字一样分配它。
public MyCircle(double radius) {
this.radius = radius;
}