哈哈哈哈哈基米 2020-07-13 16:37 采纳率: 50%
浏览 517

子类继承父类后构造函数的执行顺序

图片说明

图片说明

如上图代码所示,子类Student继承了父类Human,同时重写了父类中的f()方法。在测试类中创建了Student对象,应该先执行的是父类的构造方法,然后在执行子类的构造方法,但是执行父类构造方法的时候,为什么调用的是子类的f()方法。

然后把f()方法的public改成private的话,又是另一种结果。
图片说明

图片说明

这一块内容有点不是很能理解,希望又大佬能帮忙解答一下。

  • 写回答

2条回答 默认 最新

  • 封印di恶魔 2020-07-13 16:52
    关注

    执行顺序是先父类构造函数,再子类构造函数
    执行父类的构造函数时,由于方法f已经被重写了,子类父类的方法f可以视为同个方法,所以调用子类的
    关键词改成private,这时方法变为私有,子类父类的方法f为两个不同的方法只是名字一样
    改成private可以理解为下面这种方式

    class Human {
        public Human() {
            parentPrint()
        }
        public void parentPrint() {
            System.out.println("Human....")
        }
    }
    class Student extends Human {
        public Student(){
            childPrint()
        }
        public void childPrint() {
            System.out.println("Student....")
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决