面向对象三大特征---继承
继承的概念
继承是一种类与类的关系,就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为,继承是实现代码复用的一种方式,继承实现了面向对象模块的层次性。被继承的类叫做基类或父类,继承后产生的新类叫派生类或子类。
上图所示是一个具有三级层次的继承结构,动物是食草动物、食肉动物的基类,食草动物是兔子、羊的父类;兔子、羊又是食草动物的子类;食草动物、食肉动物是动物的子类。
继承的实现
C++可以实现多继承,java、C#等大部分程序语言仅允许实现单继承。继承是为了复用父类代码的一种机制,使用继承时必须深刻了解,父类代码和子类代码的执行顺序,以下已java为例,展示父类与子类方法的执行顺序,java的继承是使用extend关键字实现的。
- 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一个类对象,类中各部分执行顺序:静态代码块—非静态代码块—构造函数—一般方法
- 创建一个子类对象时代码执行顺序
给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 一个子类对象时,代码执行顺序为:
父静态代码块–子静态代码块–父非静态代码–父无参构造函数–子静态代码块–子构造函数–方法。
- 子类执行父类定义的有参构造函数时,代码写法:
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 //子类具体方法
- 子类执行父类定义方法,上述示例中子类将父类的方法重置,如果需要执行父类的方法时,使用super.方法名,调用父类代码,代码如下:
public void sayHello(){super.sayHello();System.out.println("goldenMenber hello word");}
执行结果如下:
base hello word //父类方法执行
goldenMenber hello word //子类方法执行
继承的好处
实现了子类对父类方法的复用,并能扩展新的属性和方法,同时继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。
面向对象三大特征---继承相关推荐
- Java面向对象三大特征---继承
系列文章目录 Java面向对象三大特征-多态 Java面向对象三大特征-封装 文章目录 系列文章目录 前言 一.概念 二.举例说明 三.语句格式 三.为何要使用继承 四.super与this关键字 五 ...
- 面向对象三大特征——继承
继承 :子类继承父类,子类将得到父类的全部方法和Field,但不能获得父类的构造器,一个子类只有一个直接的父类,用 extends 关键字来实现. 1.子类将得到父类的全部方法 ?.这得分三种情况讨论 ...
- c 子类对象 访问父类对象受保护成员_面向对象三大特征: 继承
如果子类重写了父类的方法,子类对象又要使用父类的方法怎么办 继承 今日内容 所有的类都直接或者简洁的集成到了Object Object:祖宗类 概述 要定义的类属于已有类的一种时,可以将该类定义为已有 ...
- 【跟学C++】面向对象三大特征——继承(Study20)
文章目录 1.了解继承 2.基类与派生类(父类与子类) 2.1.概念 2.2.案例展示 3.构造顺序与析构顺序 4.继承种类 4.1.私有继承 4.2.保护继承 4.3.多继承 5.总结 ===== ...
- 面向对象第七章,内存的管理,面向对象三大特征封装、继承、多态
###1.内存管理:由JVM来管理的------了解 1)堆: 1.1)存储new出来的对象(包括实例变量) 1.2)垃圾:没有任何引用指向的对象 垃圾回收器(GC)不定时到内存中清扫垃圾, 回收过程 ...
- c++面向对象三大特征封装、继承和多态知识总结
面向对象三大特征:封装,继承,多态: 一.封装:该公开的就公开话,该私有的就隐藏掉,主要是由public,private实现:作用是便于分工和分模块,防止不必要的扩展: 二.继承:就是一种传承,可以把 ...
- c++局部对象是什么_面向对象三大特征: 封装
今日内容 面向对象概述 类和对象的关系 面向对象内存图 private.this关键字和封装 面向对象之构造方法 面向对象三大特征 封装 继承 多态 01. 面向过程和面向对象思想概述 什么是面向过程 ...
- 细说面向对象三大特征
一.软件设计的概况 1. 软件的生命周期 产品提出需求 分析以及规划 软件编码及其调试(自测,联调) 上测试环境,给测试人员测试(提bug) 上 linux 生产服务器(运维人员维护,修改bug,系统 ...
- Java基础:面向对象三大特征、五大原则
转载请注明出处:jiq•钦's technical Blog 面向对象三大特征: (1)封装(Encapsulation) 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可 ...
最新文章
- 2021 年 NLP 重要国际会议时间
- Java基础学习总结(16)——Java制作证书的工具keytool用法总结
- php 5.3 construct_PHP 5.3新增魔术方法__invoke概述
- 六年级下册计算机电子板报教案,小学信息技术闽教版四年级下册第6课 制作电子板报教案设计...
- 洛谷 P3157 [CQOI2011]动态逆序对 | CDQ分治
- Windows驱动开发要点总结一
- boost::safe_numerics::automatic相关的测试程序
- HBase数据存储格式
- java中负数取整_Java取整,固定保留两位小数,适配负数、金融数字。
- 多项式曲线拟合最小二乘法
- Linux进程之间通信 信号
- git远程分支修改名字
- apache/nginx/nodejs原理简析
- zafu 1461 (DP)
- Linux电驴客户端,ubuntu装电驴
- android imei *#06#,[Android]Hot key IMEI *#06# and *#07#
- 【转】nodejs更新mysql数据库信息
- 复现贪吃蛇程序——玩家控制小蛇的移动(第三部分)
- python根据身高计算标准体重_有谁知道如何根据身高计算标准体重
- 前端人眼中的大数据生态链