面向对象第二个特征-继承(Inheritance)

                             作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.java中的继承概述

1>.继承概述

  多个类种存在相同属性和行为时,讲这些内容抽取到单独一个类中,那么多个类中无需再定义这些属性和行为,只要继承单独的那个类即可。

  多个类可以称为子类,单独的这个类称为父类或者超类。

  子类可以直接范围父类中的非私有的属性和行为。

  通过extends关键字让类与类之间产生继承关系。

  继承的出现提供了代码的复用性,让类鱼类之间产生了关系,提供了多态的前提。

2>.继承案例

package cn.org.yinzhengjie.extemdPackage;

/**
* 定义Person父类
* @author 尹正杰
*
*/
public class Person {
String name;
int age;
}

Person.java

package cn.org.yinzhengjie.extemdPackage;

/**
* 定义Worker子类
* @author 尹正杰
*
*/
public class Worker extends Person{ public void work() {
System.out.println("working...");
}
}

Worker.java

package cn.org.yinzhengjie.extemdPackage;

/**
* 定义Student子类
* @author 尹正杰
*
*/
public class Student extends Person { public void study() {
System.out.println("study...");
}
}

Student.java

二.继承的特点

  (1)Java只支持单继承,不支持多继承,换句话说,一个类只能有一个父类,不可以有多个父类。
      如果一个类可以继承多个父类,那么其多个父类同时定义了相同的方法,那么此时子类到底该继承哪个父类呢?因此我们说Java很机制的规避了多继承的安全隐患。
      class SubDemo extends Person{}       //语法ok,Java支持单继承。
      class SubDemo extends Student,Worker{}  //语法错误(error),Java不支持多继承。   (2)Java支持多层继承(继承体系)
      Java虽然不可用同时多继承,但是子类继承的父类,其父类是可以继承其它父类的,但多次继承也会带来一个弊端就是最后继承的子类可能有很多属性和方法压根就用不上,为了解决这一问题,Java引入了Interface关键字,这个话题后续再谈。      
      class Student extends Person{}    
      class Worker extends Student{}
      class SubDemo extends Worker{}

三.继承的体现

1>.什么时候定义继承

  只要一个事物是另一个事物的一种,理论上都是可以用继承来体现的。

2>.定义继承注意事项

  (1)不要仅为了获取其它类中的某个功能而去继承。

  (2)类与类之间要有所属("is a")关系,即谁是谁的一种,比如Worker和Student都是属于Person。

面向对象第二个特征-继承(Inheritance)的更多相关文章

  1. 面向对象三大特性一一继承(inheritance)和组合(Composition)

    记住2句话(常识),像个正常人思考! 1.“  is-a ”关系 用 继承! 学生是人,学生继承人这个类, 2. “has-a ”关系 用 组合!电脑有显卡,那么我们就在计算机类中增加显卡属性来复用显 ...

  2. python面向对象的三大特征--继承

    #什么时候用继承 #1.当类之间有显著不同,并且较小的类是较大的类所需的组件时,用组合比较好 #2.当类之间有很多相同的功能,提供这些共同的功能做成基类,用继承比较好 class Dad: " ...

  3. python面向对象的三大特征--继承子类调用父类方法

    #在子类中调用父类方法 class Vehicle: country="China" def __init__(self,name,speed,load,power): self. ...

  4. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  5. Python面向对象初始(三大特征,多态,继承,封装)

    Python面向对象的初始 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的 ...

  6. C#学习笔记7:多态是面向对象的三大特征(封装、继承、多态)之一

    多态: 多态是面向对象的三大特征(封装.继承.多态)之一. 什么是多态? 一个对象表现出多种状态. 多态的实现方法: 1.虚方法: 2.抽象方法: 3.接口. PS:New 关键词可以隐藏父类的方法. ...

  7. OOP面向对象 三大特征 继承封装多态

    OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...

  8. 面向对象的基本特征:封装(接口 、struct、枚举、委托、匿名函数) 继承,多态。

    如何理解面向对象的基本特征:封装 我们通过接口 .struct.枚举.委托.泛型.匿名函数的去理解封装 接口 .struct.枚举.委托.泛型.匿名函数有什么区别?我们通过这些IL探究真相,案例如下: ...

  9. Python全栈--9 __import__ 反射和面向对象基础 self 封装 继承(多继承的顺序) 多态

    一.反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...

随机推荐

  1. Linux centosVMware MySQL主从介绍、准备工作、配置主、配置从、测试主从同步

    一.MySQL主从介绍 MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binl ...

  2. 「JLOI2014」聪明的燕姿

    传送门 Luogu 解题思路 很容易想到直接构造合法的数,但是这显然是会T飞的. 我们需要考虑这样一件事: 对于一个数 \(n\),对其进行质因数分解: \[n=\sum_{i=1}^x p_i^{c ...

  3. 一个自己实现的Vector(只能处理基本类型数据)

    一个自己实现的Vector(只能处理基本类型数据) string 类型不行 bool char* int double float long long 等基本s类型可用 使用模板类实现.底层为数组实现 ...

  4. Docker 镜像文件的导入和导出

    使用save命令 保存镜像 docker save -o name_by_you.tar exist_images 将文件copy到另一台机器 使用load命令将镜像文件保存到本地仓库 docker ...

  5. JDBC Connection Configuration配置正确,提示Error preloading the connection pool

    JDBC Connection Configuration配置正确,提示Error preloading the connection pool JDBC 请求报错,提示: 因为之前执行是正确的,这次 ...

  6. PAT (Advanced Level) 1140~1143:1140模拟 1141模拟 1142暴力 1143 BST+LCA

    1140 Look-and-say Sequence(20 分) 题意:观察序列D, D1, D111, D113, D11231, D112213111, ...,显然后一个串是对前一个串每一小段连 ...

  7. SpringBoot邮件推送功能

    鞠躬,道歉 抱歉,迟到了近一年的更新,这一年挺忙的,发生了很多事情,就厚脸皮拖更了,抱歉. 现在状态回来了,打算分享下近期学到的东西,这一年期间学到的东西可能会随意更新,其实也就是玩了下C# + un ...

  8. 微信小程序自定义组件-下拉框

    这个是网址https://www.cnblogs.com/zjjDaily/p/9548433.html 微信小程序之自定义select下拉选项框组件 知识点:组件,animation,获取当前点击元 ...

  9. Day7 - C - Saddle Point ZOJ - 3955

    Chiaki has an n × m matrix A. Rows are numbered from 1 to n from top to bottom and columns are numbe ...

  10. 009.Delphi插件之QPlugins,服务的热插拔

    这个DEMO用来演示服务的替换,用起来总是怪怪的感觉,效果图如下 代码如下 unit Frm_Main; interface uses Winapi.Windows, Winapi.Messages, ...