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