Java 来自调用函数的可变可见性
我有两门课。在一个类中,我有4个变量。我实例化另一个类并使用使用这些变量的方法。我不想将它们作为参数传递。它们被设置为公开的。这两个类彼此位于默认包中。这是我的密码:Java 来自调用函数的可变可见性,java,visibility,access-specifier,Java,Visibility,Access Specifier,我有两门课。在一个类中,我有4个变量。我实例化另一个类并使用使用这些变量的方法。我不想将它们作为参数传递。它们被设置为公开的。这两个类彼此位于默认包中。这是我的密码: public class c1 { public int x, y, x1, y1; public static void main(String args[]) { c1 a = new c1(); } public c1() { c2 b = ne
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);
}
}
我得到一个错误,它说:找不到符号您实例化了对象(类的)。您的“变量”是该类的字段。如果字段不是静态的(如在代码中),那么它们属于对象,您必须将相应的对象传递给另一个类的方法才能访问字段
应该如此
b.getSlope(a)
调用方法时,实现必须具有该参数
public int getSlope(c1 c) {
return (c.y-c.y1)/(c.x-c.x1);
}
如果希望字段属于该类,则它们必须是静态的
(请注意,在Java中,按照约定,类名应以大写字母开头)。c2类中不存在变量x、y、x1、y1,因此您的代码永远不会编译
如果您想在C2类中使用X、Y、X1和Y1,请考虑尝试另一种方法。 除了你不是指公共积分斜率(c1 c)。。。因为c1有变量?然后,在c1的构造函数中,调用可能类似于b.getSlope(this)。除此之外,没有设置任何值,因此变量都将为零。但是他们需要传递一个c1的实例。。。不是c2,对吧?除此之外,答案是肯定的。实例化意味着“创建的实例”。所以你要实例化类。