繁体   English   中英

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

[英]How can i access one class variable into other

有对单独的类类和类两种 这两个类都在同一包中。 我想将一个类的数据访问到另一个类中,如何访问变量数据。 我的程序很长,我只想要这个逻辑。谢谢您。

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声明为Static一样,这样我就可以直接获取访问权限,但是它不起作用。 当我正在编译B.java时,它给我错误

无法在:= System.out.println(“ A类的变量为:” + obj.a )中找到符号;

表达式的非法开头( 当我将变量a公开化时

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

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

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

上面没有两个真正的面向对象的类,但是只有两个用于静态main方法的容器。 为了很好地结合两个类中的代码,您将需要废弃该代码并制作兼容OOP的类,并附带实例字段和方法。 有关更多信息,请查看Java教程的OOP部分: 链接到OOP教程

首先,摆脱Amain() 您只需要应用程序中的一个 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”方法的作用。

单线回答:要在类外部访问变量,请使其成为类级别的。 您编写了一个方法级别的变量,该变量只能在该范围(方法)内访问。

详细说明:

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

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

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等)适用于类级别的东西,例如您看到的class B类中的第一个varmain方法。

表示:您需要立即转到此处: https : //docs.oracle.com/javase/tutorial/,而在缺少语言基础知识时,不只是尝试运行某些类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM