[英]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.