繁体   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