Java 如何将一个类变量访问到另一个类变量

Java 如何将一个类变量访问到另一个类变量,java,core,Java,Core,有两个独立的类,一个类和两个类。这两个类都在同一个包中。我想将一个类的数据访问到另一个类,如何访问变量数据。我的节目很长,我只想知道其中的逻辑。提前谢谢你 Class A.java public class A { public static void main(String ar[]) { int a=100; } } Class B.java 我这样做是为了获得访问权限,就像我声明变量a是静态的那样,这样我可以直接获得访问权限,但

有两个独立的类,一个类和两个类。这两个类都在同一个包中。我想将一个类的数据访问到另一个类,如何访问变量数据。我的节目很长,我只想知道其中的逻辑。提前谢谢你

Class A.java

public class A
   { 
     public static void main(String ar[])  
    {
      int a=100;
    }  
   }
Class B.java

我这样做是为了获得访问权限,就像我声明变量a是静态的那样,这样我可以直接获得访问权限,但它不起作用。当我编译B.java时,它会给我带来错误

在以下位置找不到符号:=System.out.println(“A类变量为:+obj.A

表达式的非法开始(当我将变量a作为公共变量进行delaring时


:-(错误)公共int a=100;[在类A中]。

上面没有两个真正的面向对象类,但是静态主方法的容器只多了两个。要将两个类中的代码很好地结合起来,您需要废弃这些代码,并创建符合OOP的类,包括实例字段和方法。有关这方面的更多信息,请查看Java教程的OOP部分:。

为什么要使用静态main方法?此外,
a
字段是本地字段,在范围之外无法访问。用这个代替

public class A
{ 
  public int a;
  public A()  
   {
    a=100;
   }  
}

首先,去掉
A
中的
main()
。在应用程序中只需要一个
main()
,它位于
B
(因为
A
中的一个实际上什么都不做):

现在,您希望
A
具有类级别
int
值:

public class A {
    private int a;
}
您希望它的默认值为
100
,是吗?构造函数是一个很好的地方:

public class A {
    private int a;

    public A() {
        this.a = 100;
    }
}
现在,每当您执行此操作时:

A obj = new A();
您将拥有一个具有值的对象。为了从对象外部访问该值,您需要一个“getter”:

现在在
B
(或者任何地方),您可以创建
A
的实例,并使用“getter”访问该值:


从语义上讲,不要将其视为“从另一个类访问变量”。相反,想想你的对象是什么,它们代表什么。如果它是一个物理的、真实的对象,它内部包含某种价值


当您创建该对象的实例时,该实例将在内部某个位置具有该值。从对象的外部来看,如何在内部维护该值并不重要。只需要有某种接口就可以看到值。这就是“getter”方法所做的。

一行回答:要访问类外的变量,请将其设置为类级别。您已经编写了一个方法级变量,该变量只能在该范围(方法)内访问

详细说明:

一班和二班是分开的。这两个类都在同一个包中。我想将一个类的数据访问到另一个类,如何访问变量数据

所以基本上您知道,通过扩展,您应该能够访问子类中的父类数据。为此,只需将父类中的数据设置为类级别

class A {
    int var = 10; //class level, but non-static, so to access you need A object

    void method() {
        int var = 20; //this is method local and can not be accessed outside
    }
}

public class B extends A {
    public static void main(String[] args) {
        A aObj = new A();
        System.out.println(aObj.var);
    }
}
表达式的非法开始(当我将变量a作为公共变量进行delaring时)

这是非法的。因为访问修饰符,如
public
private
等,适用于类级别的内容,如
var
中的第一个
main
方法

说: 您需要立即转到这里:
而不是在你缺乏语言基础的时候试着去上一些课。

你比我强多了。我只是在回答类似的问题,嗯?这是什么样的答案?你可以通过社区wiki来回答?@MuratK:问题是:“我对Java OOP一无所知”,在我看来这是一个非常薄弱的问题。最好的答案是让他参考一个教程来学习OOP。他真的不需要关于如何做他想做的事情的特定代码,他需要学习广泛的概念,这些概念太广泛了,以至于不能包含在任何合适的答案中。由于答案和问题的质量都有点差,我把它做成了一个社区维基,这样我就不会因为任何赞成票或反对票而获得信用。好吧,从来没有看到过社区维基的答案。我还以为它们是一些古老的文物呢。@kush:对不起,我这么称呼它。你的问题表明,如果你认为自己擅长OOP,那你就大错特错了。@kush:我不想和你争论,但如果你是OOP方面的专家,甚至是一个一流的初学者,你就会知道这就是你问题的答案。
A obj = new A();
public class A {
    private int a;

    public A() {
        this.a = 100;
    }

    public int get_a() {
        return this.a;
    }
}
A obj=new A();
System.out.println("Variable of class A is :"+ obj.get_a());
class A {
    int var = 10; //class level, but non-static, so to access you need A object

    void method() {
        int var = 20; //this is method local and can not be accessed outside
    }
}

public class B extends A {
    public static void main(String[] args) {
        A aObj = new A();
        System.out.println(aObj.var);
    }
}