JAVA 中 子类继承父类方法后 无法获取想要获得的父类参数

在代码中
创造了一个父类father的实例f
并为f的number属性赋值。
创造一个子类child的实例c
获得f的number属性
继承father类的show方法时本该显示c的number属性的地方显示了father类属性的初始值。
但若直接重写方法,C的number无异常。

想请教这个代码中的super.show()是否是我用错了

以下为主代码

import java.util.Scanner;

public class text {
    public static void main(String[] args) {
        father f=new father();
        Scanner input=new Scanner(System.in);
        System.out.println("输入number:");
        int num=input.nextInt();
        f.setNumber(num);
        child c=new child(f);
        c.showChild();
        f.show();

    }

}

以下为father类代码


public class father {
    private int number = 30;

    public void setNumber(int input) {
        this.number = input;
    }

    public int getNumber(father a) {
        return a.number; }

    public void show() {
        System.out.println("这是father对象的number:" + number);
    }
}

以下为child类代码


public class child extends father {
    private int number;

    public child() {
    }

    public child(father f) {
        System.out.println(f.getNumber(f));
        this.number = f.getNumber(f);
    }


      public void setNumber(int input) { this.number=input; } public int
      getNumber(child c) { return c.number; }


    public void showChild() {
        super.show();
        System.out.println("这是child对象的number:" + number);
    }
}

以下为运行结果:
输入number:
11
11
这是father对象的number:30 //30为father类的初始值
这是child对象的number:11
这是father对象的number:11

以下为预想中的运行结果
输入number:
11
11
这是father对象的number:11
这是child对象的number:11
这是father对象的number:11

super.show() 本质上就是当前类的方法,因为当前类继承了父类的方法,但是方法输出的变量是当前类的成员变量。
成员变量是私有的,父类的私有成员变量不能被子类访问到的。

子类继承了父类的方法,等价于show()就是子类自己的方法,在自己的方法中打印的当然是自己的成员变量了。

写的太乱,不是很清楚你要干什么,你看看我整合的代码。
/**

  • 类名要大写,养成习惯
    */
    public class Father {
    private int fatherNumber = 30;

    public int getFatherNumber() {
    return fatherNumber;
    }
    public void setFatherNumber(int fatherNumber) {
    this.fatherNumber = fatherNumber;
    }
    public void show() {
    System.out.println("这是father对象的number:" + fatherNumber);
    }
    }


public class Child extends Father {
private int childNumber = 5;

public Child() {
}
public int getChildNumber() {
    return childNumber;
}
public void setChildNumber(int childNumber) {
    this.childNumber = childNumber;
}
public void showChild() {
    // 这里要使用super的方法,子类必须继承Father
    super.show();
    System.out.println("这是child对象的number:" + childNumber);
}

}


public class Test {
public static void main(String[] args) {
Father f=new Father();
Scanner input=new Scanner(System.in);
System.out.println("输入number:");
int num=input.nextInt();
f.setFatherNumber(num);
Child c=new Child();
c.showChild();
f.show();

}

}

把Father类中number前的private修饰符去掉就行了,父类的私有成员是不能被继承的。

这个程序总共有三个对象
对象1:father new出来的因为有设置过它的值,所以它是11
对象2:child,同上
对象3:father,该对象为chiled继承,在child调用showChild();方法时打印值,改值因为没有被修改过所以值未变。