Java 来自调用函数的可变可见性

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

我有两门课。在一个类中,我有4个变量。我实例化另一个类并使用使用这些变量的方法。我不想将它们作为参数传递。它们被设置为公开的。这两个类彼此位于默认包中。这是我的密码:

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,对吧?除此之外,答案是肯定的。实例化意味着“创建的实例”。所以你要实例化类。