我正在努力掌握Java和OOP的基础知识。根据我的理解,如果我有一个用变量radius实例化的对象Circle
,并将其传递给double
x,那么Object的方法是否能够访问这些?
package classes;
public class Circle {
Circle(double radius) {
double x = radius;
}
double area() {
return x * x * 3.1415; // x can't be resolved to a variable
}
}
答案 0 :(得分:3)
x
仅在Circle构造函数的范围内可用。在类级别声明它,以便area
方法
public class Circle {
private double x;
Circle(double radius) {
this.x = radius;
}
...
}
答案 1 :(得分:0)
在您的示例中,double x
的范围仅限于构造函数。如果将其移出到对象级别,它将按预期工作。
public class Circle {
private double x;
Circle(double radius) {
this.x = radius;
}
double area() {
return x * x * 3.1415;
}
}
答案 2 :(得分:0)
此处您有范围问题。当你在构造函数中声明x
时,你告诉它只能在它内部访问。
您可能想在外面宣布:
public class Circle {
double x;
Circle(double radius) {
x = radius;
}
...
}
答案 3 :(得分:0)
在课程级别定义后,使用'this'作为可读性。
public class Circle {
private double x =0.0;
Circle(double radius) {
this.x = radius;
}
double area() {
return this.x * this.x * 3.1415; // x can't be resolved to a variable
}
}
答案 4 :(得分:0)
试试这段代码:
public class Circle {
private double x =0.0;
Circle(double radius) {
this.x = radius;
}
double area() {
return this.x * this.x * Math.PI;
}
}