继承-被透明化的认知

简介: 前段时间和领导交流,被问到:java中什么是继承?继承在编译过程的代码体现是什么?继承在运行时的代码体现是什么?

一、背景介绍


前段时间和领导交流,被问到:java中什么是继承?继承在编译过程的代码体现是什么?继承在运行时的代码体现是什么?


我的回答:??? 此处留下一些想象的空间。


二、思路&方案


1.放下自己曾经对于java继承的认识,结合问题,查阅资料了解java继承

2.通过简单的damo实现,来理解继承

3.通过idea中的工具查看.java文件编译为.class文件后的子类的结果

4.通过查看.class文件的工具进程查看子类

5.通过只实例化子类,查看是否可以通过子类使用父类的方法


三、过程


1.查询结果

子类拥有父类非 private 的属性、方法。

子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

子类可以用自己的方式实现父类的方法。


2.同下面5的例子


3.查看结果(子类中没有显示父类中的公有方法)


14f8febe96c04fb69f94cb6bb1c83f70.png

86896e33c5714c34866e5d69a4ed306c.png

ed3ce76fb2ee4009ad4a522d16eccf1e.png


4.查看结果(子类中没有显示父类中的公有方法)


bf620cf1805b4e158683411a7f5d9419.png


5.子类是可以直接实例化后使用父类的方法的,证明继承之后编译为.class文件,将父类的公有方法复制到了父类一份


package com.b0027继承;
public class Animal {
    private String name;
    public void jiao(){
        System.out.println("动物叫");
    }
}


package com.b0027继承;
import com.b0016MVC.mvc消息传递.A;
public class Pig extends Animal {
    private void move(){
        System.out.println("动物移动");
    }
}


package com.b0027继承;
public class Client {
    public static void main(String[] args) {
//        Animal pig = new Pig();
//        pig.jiao();
        //这里就说明了,子类在进行编译的时候,直接将父类的属性和方法拿到了子类一份,
        //之后,子类就可以直接点出来父类的方法使用了
        Pig pig1 = new Pig();
        pig1.jiao();
    }
}


四、总结


1.对于提出的问题要去思考和落地实现

2.不能被idea工具和查看.class工具呈现的表象迷惑(这两个工具呈现的表象小编认为是为了和.java文件中的内容保持一致)

3.得出结论:继承是将父类非private修饰的属性和方法都复制到了子类一份

五、升华


1.拥有提出这样问题的习惯和思路非常重要

2.就好比我们熟知的空气一样,习惯了有空气的存在从而就将空气是人的必需品给透明化了

3.透明化习惯的摆脱可以利用刻意练习来规避打破(奉上刻意练习的地址:为什么有人工作10年仍不是专家,有人2年就足够卓越了?)

相关文章
|
4月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
43 7
|
2月前
|
机器学习/深度学习 人工智能 数据可视化
什么是共性技术?它在项目管理中如何发挥关键作用?
在现代技术驱动的项目中,共性技术成为提升生产力、资源效率和创新的关键工具。本文探讨了共性技术在项目管理中的作用,包括标准化流程、提高协作效率、资源优化、降低风险和加速项目交付,并推荐了板栗看板、JIRA和Asana等项目管理工具,助力团队高效协作与管理。
55 7
|
2月前
|
数据采集 监控 数据可视化
数据治理成功的九大细节,你都忽略了哪几个?
数字化时代,数据作为新的生产要素受到了各界前所未有的重视。
|
7月前
|
JavaScript 前端开发
掌握构造函数:打破面向对象编程难题(一)
掌握构造函数:打破面向对象编程难题
|
7月前
|
JavaScript 前端开发 程序员
掌握构造函数:打破面向对象编程难题(二)
掌握构造函数:打破面向对象编程难题
|
设计模式 架构师 Java
五大(七大)原则-系统学习三
小编自涉足程序园界几千天之多;对于设计原则的学习一直在努力从未见到顶。最近又将设计原则从宏观和微观的角度进行了对比学习;仅以此将自己的学习过程和收获做如下总结,
|
人工智能 架构师 算法
学习笔记 | 在变化中抽象不变: 技术变局下的架构师升级之想
学习笔记 | 在变化中抽象不变: 技术变局下的架构师升级之想
143 0
|
项目管理
CMMI五大成熟度定义及过程管理类详解
CMMI五大成熟度定义及过程管理类详解
229 0
|
供应链 数据可视化 BI
【企业架构】描绘未来第 2 部分:定义能力路线图
【企业架构】描绘未来第 2 部分:定义能力路线图