面向对象第二个特征-继承(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. 十二、js去掉空格_比较字符长度_中英文判断_页面初始化_简体字与繁字体判断

    1.去掉字符串前后所有空格 function trimBlank(str){ return str.replace(/(^\s*)|(\s*$)/g, ""); } 2.字符串长度 ...

  2. robotframework+appium 实现App自动化值环境搭建(一)

    第一步: Cmd命令输入pip install robotframework-appiumlibrary  下载和导入appiumlibrary 第二步: 安装JDK,附件有JDK1.8安装包 第三步 ...

  3. LINQ -- 匿名类型

    匿名类型注意事项: 匿名类型只能和局部变量配合使用,不能用于成员. 由于匿名类型没有名字,我们必须使用var关键字作为变量类型. 不能设置匿名类型对象的属性.编译器为匿名类型穿件的属性是只读的. 除了 ...

  4. 快速为Eclipse配置PyDev插件

    想学习Python,查询网络之后发现PyDev是很好的插件,所以就想为Eclipse配置它.结果在整个配置的过程中出现了各种问题,版本问题,重复问题,反正乱七八糟的,本身安装一次的时间就很长,中间出现 ...

  5. springboot整合logback集成elk实现日志的汇总、分析、统计和检索功能

    在Spring Boot当中,默认使用logback进行log操作.logback支持将日志数据通过提供IP地址.端口号,以Socket的方式远程发送.在Spring Boot中,通常使用logbac ...

  6. Swift Access Levels (变量关键字访问权限)

  7. define可变参数,float数据传输

    define可变参数 一般在调试打印Debug信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC也支持可变参数宏, 但是两种在 ...

  8. docker学习笔记-01:docker基本原理

    一.docker原理 1.什么是docker:解决了运行环境和配置问题的容器,方便做持续集成并有助于整体发布的容器虚拟化技术. 2.虚拟机的缺点:(1)资源占用多:(2)冗余步骤多:(3)启动慢,分钟 ...

  9. 剑指offer,双指针法,vector输出不完美

    原因:由于在第一个res push_back给allRes的时候allRes的列已经确定,所以在输出的时候会输出一些多余的东西,在输出的时候不好处理 #include <iostream> ...

  10. 003.CI4框架CodeIgniter, 控制器Controllers的访问地址

    01.我们新建一个System文件夹,然后创建一个Login.php类,代码如下: <?php namespace App\Controllers\System; use App\Control ...