![](/img/trans.png)
[英]How can I access the member variable of class A outside the method, that has been instantiated in other class?
[英]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教程 。
首先,摆脱A
的main()
。 您只需要应用程序中的一个 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公开化时)
它是非法的。 因为访问修饰符(例如public
, private
等)适用于类级别的东西,例如您看到的class B
类中的第一个var
或main
方法。
表示:您需要立即转到此处: https : //docs.oracle.com/javase/tutorial/,而在缺少语言基础知识时,不只是尝试运行某些类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.