继承的概念

继承是一种类与类的关系,就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为,继承是实现代码复用的一种方式,继承实现了面向对象模块的层次性。被继承的类叫做基类或父类,继承后产生的新类叫派生类或子类。

上图所示是一个具有三级层次的继承结构,动物是食草动物、食肉动物的基类,食草动物是兔子、羊的父类;兔子、羊又是食草动物的子类;食草动物、食肉动物是动物的子类。

继承的实现

C++可以实现多继承,java、C#等大部分程序语言仅允许实现单继承。继承是为了复用父类代码的一种机制,使用继承时必须深刻了解,父类代码和子类代码的执行顺序,以下已java为例,展示父类与子类方法的执行顺序,java的继承是使用extend关键字实现的。

  1. new一个类对象,类中各部分执行顺序,示例代码如下:
public class BaseMember {static {System.out.println("base static code exec");}{System.out.println("base non static code exec");}public BaseMember(){System.out.println("执行构造函数内容");}public void sayHello(){System.out.println("base hello word");}
}

main中代码为:

 BaseMember baseMember = new BaseMember();baseMember.sayHello();

执行结果为:

base static code exec  //静态代码块
base non static code exec //非静态代码块
执行构造函数内容 //构造函数
base hello word //具体方法

new一个类对象,类中各部分执行顺序:静态代码块—非静态代码块—构造函数—一般方法

  1. 创建一个子类对象时代码执行顺序
    给baseMenber创建一个子类goldenMenber,代码如下:
public class GoldenMenber extends BaseMember {static {System.out.println("goldenMenber static code exec");}{System.out.println("goldenMenber non static code exec");}public GoldenMenber(){System.out.println("goldenMenber构造函数");}public void sayHello(){System.out.println("goldenMenber hello word");}
}

main中调用代码如下:

GoldenMenber goldenMenber = new GoldenMenber();
goldenMenber.sayHello();

执行结果如下:

base static code exec //父类静态代码块
goldenMenber static code exec //子类静态代码块
base non static code exec//父类非静态代码块
执行构造函数内容 //父类无参构造函数
goldenMenber non static code exec//子类非静态代码块
goldenMenber构造函数//子类构造函数
goldenMenber hello word //子类具体方法

new 一个子类对象时,代码执行顺序为:
父静态代码块–子静态代码块–父非静态代码–父无参构造函数–子静态代码块–子构造函数–方法。

  1. 子类执行父类定义的有参构造函数时,代码写法:
 public GoldenMenber(){super("父类有参构造函数");System.out.println("goldenMenber构造函数");}

此时,代码将不执行父类无参构造函数,执行结果如下:

base static code exec //父类静态代码块
goldenMenber static code exec //子类静态代码块
base non static code exec//父类非静态代码块
父类有参构造函数执行构造函数内容 //父类有参构造函数
goldenMenber non static code exec//子类非静态代码块
goldenMenber构造函数//子类构造函数
goldenMenber hello word //子类具体方法
  1. 子类执行父类定义方法,上述示例中子类将父类的方法重置,如果需要执行父类的方法时,使用super.方法名,调用父类代码,代码如下:
public void sayHello(){super.sayHello();System.out.println("goldenMenber hello word");}

执行结果如下:

base hello word    //父类方法执行
goldenMenber hello word //子类方法执行

继承的好处

实现了子类对父类方法的复用,并能扩展新的属性和方法,同时继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

面向对象三大特征---继承相关推荐

  1. Java面向对象三大特征---继承

    系列文章目录 Java面向对象三大特征-多态 Java面向对象三大特征-封装 文章目录 系列文章目录 前言 一.概念 二.举例说明 三.语句格式 三.为何要使用继承 四.super与this关键字 五 ...

  2. 面向对象三大特征——继承

    继承 :子类继承父类,子类将得到父类的全部方法和Field,但不能获得父类的构造器,一个子类只有一个直接的父类,用 extends 关键字来实现. 1.子类将得到父类的全部方法 ?.这得分三种情况讨论 ...

  3. c 子类对象 访问父类对象受保护成员_面向对象三大特征: 继承

    如果子类重写了父类的方法,子类对象又要使用父类的方法怎么办 继承 今日内容 所有的类都直接或者简洁的集成到了Object Object:祖宗类 概述 要定义的类属于已有类的一种时,可以将该类定义为已有 ...

  4. 【跟学C++】面向对象三大特征——继承(Study20)

    文章目录 1.了解继承 2.基类与派生类(父类与子类) 2.1.概念 2.2.案例展示 3.构造顺序与析构顺序 4.继承种类 4.1.私有继承 4.2.保护继承 4.3.多继承 5.总结  ===== ...

  5. 面向对象第七章,内存的管理,面向对象三大特征封装、继承、多态

    ###1.内存管理:由JVM来管理的------了解 1)堆: 1.1)存储new出来的对象(包括实例变量) 1.2)垃圾:没有任何引用指向的对象 垃圾回收器(GC)不定时到内存中清扫垃圾, 回收过程 ...

  6. c++面向对象三大特征封装、继承和多态知识总结

    面向对象三大特征:封装,继承,多态: 一.封装:该公开的就公开话,该私有的就隐藏掉,主要是由public,private实现:作用是便于分工和分模块,防止不必要的扩展: 二.继承:就是一种传承,可以把 ...

  7. c++局部对象是什么_面向对象三大特征: 封装

    今日内容 面向对象概述 类和对象的关系 面向对象内存图 private.this关键字和封装 面向对象之构造方法 面向对象三大特征 封装 继承 多态 01. 面向过程和面向对象思想概述 什么是面向过程 ...

  8. 细说面向对象三大特征

    一.软件设计的概况 1. 软件的生命周期 产品提出需求 分析以及规划 软件编码及其调试(自测,联调) 上测试环境,给测试人员测试(提bug) 上 linux 生产服务器(运维人员维护,修改bug,系统 ...

  9. Java基础:面向对象三大特征、五大原则

    转载请注明出处:jiq•钦's technical Blog 面向对象三大特征: (1)封装(Encapsulation) 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可 ...

最新文章

  1. 2021 年 NLP 重要国际会议时间
  2. Java基础学习总结(16)——Java制作证书的工具keytool用法总结
  3. php 5.3 construct_PHP 5.3新增魔术方法__invoke概述
  4. 六年级下册计算机电子板报教案,小学信息技术闽教版四年级下册第6课 制作电子板报教案设计...
  5. 洛谷 P3157 [CQOI2011]动态逆序对 | CDQ分治
  6. Windows驱动开发要点总结一
  7. boost::safe_numerics::automatic相关的测试程序
  8. HBase数据存储格式
  9. java中负数取整_Java取整,固定保留两位小数,适配负数、金融数字。
  10. 多项式曲线拟合最小二乘法
  11. Linux进程之间通信 信号
  12. git远程分支修改名字
  13. apache/nginx/nodejs原理简析
  14. zafu 1461 (DP)
  15. Linux电驴客户端,ubuntu装电驴
  16. android imei *#06#,[Android]Hot key IMEI *#06# and *#07#
  17. 【转】nodejs更新mysql数据库信息
  18. 复现贪吃蛇程序——玩家控制小蛇的移动(第三部分)
  19. python根据身高计算标准体重_有谁知道如何根据身高计算标准体重
  20. 前端人眼中的大数据生态链

热门文章

  1. layui数据表格操作栏,根据条件改变显示操作的按钮
  2. 数据备份及恢复需求分析
  3. Outlook如何将导航栏从左侧移动到底部
  4. 孙陶然:只有不到十分之一的人适合创业
  5. Unity 3D游戏九:粒子光环
  6. facebuilder免费版_Nuke新插件FaceBuilder轻松实现人物角色头部建模
  7. PLA:从线性可分到线性不可分的演化过程
  8. 计算机b级机房建设标准,A类机房建设标准和B类机房建设标准【全国施工】
  9. SWIFT之殇——针对越南先锋银行的黑客攻击技术初探
  10. ai字体行间距怎么调整_ai怎么调整文字间距- ai调整行间距的详细教程