Java扩展了奇怪的输出

dep*_*oul 0 java extends extend

我用Java编写了一个小程序,有一些我不明白的东西.

我编写的程序有3个类kingClass,masterClass和workClass.workClass扩展了masterClass.

程序:在主类(kingClass)中我已经声明了masterClass和workClass,并且使用masterClass我给变量x和y赋值.在kingClass的最后,我调用了一个addNum函数,该函数对masterClass中的两个数字求和.

现在的问题是:我预计当我运行程序时,它会给我一个我用输入给出的两个数字的总和,而不是我在构造函数中给出的值的总和.

如何编写这个程序,以便addNum返回我输入的数字之和的值.

抱歉英文不好,谢谢..

kingClass

public class kingClass 
{
public static void main(String[] args) 
{
    masterClass mClass=new masterClass();

    mClass.setX(10);
    System.out.println(mClass.getX());

    mClass.setY(5);
    System.out.println(mClass.getY());

    workClass wClass = new workClass();
    System.out.println(wClass.addNum());
}
}
Run Code Online (Sandbox Code Playgroud)

硕士课

public class masterClass 
{ 
private int x;
private int y;

masterClass()
{
    x=0;
    y=0;
}

public void setX(int a) {x=a;}
public void setY(int a) {y=a;}

public int getX() {return x;}
public int getY() {return y;}


}
Run Code Online (Sandbox Code Playgroud)

workClass

public class workClass extends masterClass 
{   
int num=getX()+getY();
public int addNum() {return num;}
}
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 6

以下两个陈述:

masterClass mClass=new masterClass();
workClass wClass = new workClass();
Run Code Online (Sandbox Code Playgroud)

创建两个完全独立的对象.修改一个时,这对另一个没有影响.

你的意思是:

public static void main(String[] args) 
{
    workClass wClass = new workClass();

    wClass.setX(10);
    System.out.println(wClass.getX());

    wClass.setY(5);
    System.out.println(wClass.getY());

    System.out.println(wClass.addNum());
}
Run Code Online (Sandbox Code Playgroud)

workClassextends 的事实masterClass使您可以masterClass在实例上使用公共方法workClass.

你的addNum()方法中还有一个错误:

public class workClass extends masterClass 
{   
    public int addNum() {return getX() + getY();}
}
Run Code Online (Sandbox Code Playgroud)

您当前的实施在施工时将数字加在一起,而忽略了对施工xy施工后的任何更改.