[英]how to pass Class B variable to class A,if class A extends Class B
在A类中扩展B类,现在我在A类中打印变量a的值。我得到的结果是a = 0。 我如何获得值a = 2
A级
package testing;
public class ClassA extends ClassB {
public void print(){
System.out.println("a= " +a);
}
public static void main(String arg[]){
ClassA ca = new ClassA();
ca.print();
}
}
B级
package testing;
public class ClassB {
int a;
public void send(){
a=2;
}
}
最初a
值为0
,因为您没有将其设置为任何值,默认情况下,当您调用new ClassA();
它被初始化为0。因此,您将获得0
作为输出。
您需要调用send
方法,将a
的值设置为2
。
ClassA ca = new ClassA();
ca.send(); //Here
ca.print();
了解类之间变量解析的另一种简便方法是使用get-set方法。
A类编码:
public class ClassA extends ClassB {
public static void main (String [] args)
{
ClassB ClassBValue = new ClassB();
System.out.println(ClassBValue.getA());
}
}
B类编码:
public class ClassB {
int A = 2;
public int getA()
{
return A;
}
public void setAValue(int A)
{
this.A = A;
}
}
希望这可以帮助
您在调用ca.print()
未ca.print()
分配任何值,因此基本上它是在打印int
a的初始值(即0)。
在打印函数之前调用send()
,编译器将首先检查ClassA
send函数,当找不到该函数时,它将调用SuperClass的send函数B,这将为您分配值'2'变量a,当您调用print()
,将调用类A中存在的打印函数,而现在类A没有名为a的变量,因此从其超类中调用变量a的值,您将获得2的值。
代码应类似于->
public class ClassA extends ClassB {
public void print(){
System.out.println("a= " +a);
}
public static void main(String arg[]){
ClassA ca = new ClassA();
ca.send();
ca.print();
}
}
public class ClassB {
int a;
public void send(){
a=2;
}
}
默认情况下,您的int变量初始化为0。
一些选项:
A)更改您的主要方法以调用send方法
ClassA ca = new ClassA();
ca.send(); //set the value to 2
ca.print();
B)如果不想更改主方法(出于任何原因),可以将变量初始化移至类构造函数:
ClassA() {
a = 2
}
现在,当您实例化类(新的ClassA())时,“ a”将等于2。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.