簡體   English   中英

如果A類擴展了B類,如何將B類變量傳遞給A類

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM