Java 如果类A扩展了类B,如何将类B变量传递给类A
在类A中扩展类B,现在我正在打印类A中变量A的值。我得到的结果是A=0。我如何得到a=2的值 甲级Java 如果类A扩展了类B,如何将类B变量传递给类A,java,Java,在类A中扩展类B,现在我正在打印类A中变量A的值。我得到的结果是A=0。我如何得到a=2的值 甲级 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()
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();
您正在调用ca.print()
,但没有为其指定任何值,因此基本上它正在打印int
a的初始化值,该值为0
在print函数之前调用send()
,编译器将首先在ClassA
中检查函数send,当在那里找不到它时,它将调用超类的send函数,即B,这将为变量a赋值“2”,当调用print()
时,将调用类a中存在的print函数,现在类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) 更改main方法以调用send方法
ClassA ca = new ClassA();
ca.send(); //set the value to 2
ca.print();
B) 如果不想更改主方法(出于任何原因),可以将变量初始化移动到类构造函数:
ClassA() {
a = 2
}
现在,当您实例化类(new ClassA())时,“a”将等于2。理解类间变量解析的另一个更简单的方法是使用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;
}
}
希望这有帮助代码不应该看起来像那样。OP的格式很糟糕。但是如果调用send(),那么“send()”方法里面还有很多函数呢。如果我喜欢上面的方法,它也会调用/执行其他方法/逻辑。那么,如果有人回答我的疑问,该怎么办呢?