继承-被透明化的认知

简介: 前段时间和领导交流,被问到: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年就足够卓越了?)

相关文章
|
Java 数据库连接 定位技术
|
3月前
|
机器学习/深度学习 人工智能 数据可视化
什么是共性技术?它在项目管理中如何发挥关键作用?
在现代技术驱动的项目中,共性技术成为提升生产力、资源效率和创新的关键工具。本文探讨了共性技术在项目管理中的作用,包括标准化流程、提高协作效率、资源优化、降低风险和加速项目交付,并推荐了板栗看板、JIRA和Asana等项目管理工具,助力团队高效协作与管理。
77 7
|
3月前
|
开发者
开发者视角:探索技术无垠,肩负时代重任
作为一名开发者,我深感责任重大,使命光荣。技术是推动社会进步的强大动力,也是改变世界的神奇钥匙。从初次接触编程起,我就被代码的魅力深深吸引,坚定成为一名卓越开发者的决心。在开发的世界里,我们保持好奇心和探索精神,不断学习新技术,挑战自我,追求创新和突破。我们注重技术的本质和原理,善于解决问题,同时也关注技术对社会、环境和伦理的影响。面对挑战,我们变得更加坚韧和成熟,提升自己的技能和素养,为社会的进步和创新贡献力量。
|
5月前
|
人工智能 算法 前端开发
打破传统叙事逻辑,构建基于原子化任务的人机交互
在复杂中后台设计中,为解决配置变更影响多场景问题,提出结合正向和逆向信息架构,采用原子化任务,动态组合任务,降低用户和开发成本,优化体验并改变已有的产品迭代和人机交互模式。未来可能发展为AI自动根据业务规则和用户行为生成最佳方案。
|
6月前
软件复用问题之在思考复用问题时,将目光从软件聚焦到人要如何解决
软件复用问题之在思考复用问题时,将目光从软件聚焦到人要如何解决
|
8月前
|
JavaScript 前端开发
掌握构造函数:打破面向对象编程难题(一)
掌握构造函数:打破面向对象编程难题
|
8月前
|
JavaScript 前端开发 程序员
掌握构造函数:打破面向对象编程难题(二)
掌握构造函数:打破面向对象编程难题
|
8月前
|
设计模式 存储 自然语言处理
Java面向对象设计七大原则
Java面向对象设计七大原则
126 0
|
设计模式 架构师 Java
五大(七大)原则-系统学习三
小编自涉足程序园界几千天之多;对于设计原则的学习一直在努力从未见到顶。最近又将设计原则从宏观和微观的角度进行了对比学习;仅以此将自己的学习过程和收获做如下总结,
|
项目管理
CMMI五大成熟度定义及过程管理类详解
CMMI五大成熟度定义及过程管理类详解
261 0