如何将一个类变量访问到其他

时间:2016-04-05 14:36:43

标签: java core

要分类类一个和类两个。这两个类都在同一个包中。我想访问一个类数据到其他类如何访问变量数据。我的程序非常冗长,我只想要这个逻辑。提前感谢你。

Class A.java

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

班级B.java

public class B extends A
{
  public static void main(String m[])
   {
     A obj=new A();
     System.out.println("Variable of class A is :"+ obj.a);
   }
}

我做了这件事来获取访问,就像我声明变量a作为静态,以便我可以直接访问但它不工作。当我正在编译 B.java 它给我错误

找不到符号:= System.out.println(" A类的变量是:" + obj.a );

并且

非法开始表达(当我将变量a声明为公共时)

:-(错误)public int a = 100; [在A班]。

4 个答案:

答案 0 :(得分:4)

为什么使用静态main方法?除此之外,字段a是本地的,并且在范围之外无法访问。请改用它。

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

答案 1 :(得分:3)

上面没有两个真正的面向对象的类,而是静态主方法的两个以上的容器。要很好地组合来自两个类的代码,您将需要废弃该代码并生成符合OOP的类,并使用实例字段和方法。有关这方面的更多信息,请查看Java教程的OOP部分:link to OOP tutorial

答案 2 :(得分:3)

首先,摆脱main()中的A。您只需要在应用程序中一个 main(),并且它位于B中(因为A中的那个 任何东西):

public class 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”:

public class A {
    private int a;

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

    public int get_a() {
        return this.a;
    }
}

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

A obj=new A();
System.out.println("Variable of class A is :"+ obj.get_a());

从语义上讲,不要将其视为“从另一个类访问变量”。相反,请考虑您的对象是什么以及它们代表什么。如果它是一个物理的,现实世界的对象,内部包含某种价值。

当您创建该对象的实例时,该实例将在内部具有该值。从该对象的外部,它实际上并不重要如何在内部维护该值。只需要某种界面来查看价值。这是“getter”方法的作用。

答案 3 :(得分:1)

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

详细说明:

  

将类Class 1和Class 2分开。这两个类都在同一个包中。我想将一个类数据访问到其他类中,如何访问变量数据。

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

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声明为公开时)

非法。因为publicprivate等访问修饰符适用于类级别的内容,例如您var中的第一个mainclass B方法。

说: 您需要立即转到此处:https://docs.oracle.com/javase/tutorial/ 而不是在缺乏语言基础时尝试运行某些课程。