英文:
variable visibility from calling function
问题
我有两个类。在一个类中,我有4个变量。我实例化另一个类并使用方法,这些方法使用这些变量。我不想将它们作为参数传递。它们被设置为public。两个类都位于相互之间的默认包中。这是我的代码:
public class c1 {
public int x, y, x1, y1;
public static void main(String args[]) {
c1 a = new c1();
}
public c1() {
c2 b = new c2();
b.getSlope();
}
}
public class c2 {
public c2() {}
public int getSlope() {
return (y-y1)/(x-x1);
}
}
我遇到一个错误,错误消息是:无法找到符号。
英文:
I have 2 classes. In one class i have 4 variables. I instantiate another class and use methods which use these variables. I dont want to pass them as parameters. They are set to public. Both classes are in the default package with each other. heres my code:
public class c1 {
public int x, y, x1, y1;
public static void main(String args[]) {
c1 a = new c1();
}
public c1() {
c2 b = new c2();
b.getSlope();
}
}
public class c2 {
public c2() {}
public int getSlope() {
return (y-y1)/(x-x1);
}
}
i get an error which says: cannot find symbol
答案1
得分: 1
你实例化对象(属于一个类)。你的“变量”是该类的字段。如果这些字段不是静态的(与你的代码一样),它们属于对象,你必须将相应的对象传递给另一个类的方法,以访问这些字段。
所以在调用该方法时应该是
b.getSlope(a)
在调用方法时,实现必须具有该参数
public int getSlope(c1 c) {
return (c.y-c.y1)/(c.x-c.x1);
}
如果你希望字段属于类,它们必须是静态的。
(请注意,在Java中,按照约定,类名应该以大写字母开头)。
英文:
You instantiate objects (of a class). Your 'variables' are fields of that class. If the fields are not static (as in your code), they belong to the object and you have to pass the corresponding object to the method of the other class to access the fields.
So it should be
b.getSlope(a)
when calling the method and the implementation has to have that argument
public int getSlope(c1 c) {
return (c.y-c.y1)/(c.x-c.x1);
}
If you like to have the fields belong to the class, they have to be static.
(Note that in Java - by convention - class names should start with a Capital letter).
答案2
得分: 0
变量 x、y、x1、y1 在你的 c2 类中不存在,所以你的代码永远无法编译。
如果你想在 c2 类中使用 x、y、x1 和 y1,请考虑尝试另一种方法。
英文:
Variables x, y, x1, y1 do not exist in your c2 class so your code will never compile.
If you want to use x, y , x1 and y1 in your c2 class, consider trying another method.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论