Lyon92 2019-07-10 02:14 采纳率: 0%
浏览 1560

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

  • 写回答

4条回答 默认 最新

  • 毕小宝 博客专家认证 2019-07-10 09:25
    关注

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

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

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码