面向对象第二个特征-继承(Inheritance)
面向对象第二个特征-继承(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)的更多相关文章
- 面向对象三大特性一一继承(inheritance)和组合(Composition)
记住2句话(常识),像个正常人思考! 1.“ is-a ”关系 用 继承! 学生是人,学生继承人这个类, 2. “has-a ”关系 用 组合!电脑有显卡,那么我们就在计算机类中增加显卡属性来复用显 ...
- python面向对象的三大特征--继承
#什么时候用继承 #1.当类之间有显著不同,并且较小的类是较大的类所需的组件时,用组合比较好 #2.当类之间有很多相同的功能,提供这些共同的功能做成基类,用继承比较好 class Dad: " ...
- python面向对象的三大特征--继承子类调用父类方法
#在子类中调用父类方法 class Vehicle: country="China" def __init__(self,name,speed,load,power): self. ...
- Java基础-面向对象第二特征之继承(Inheritance)
Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
- Python面向对象初始(三大特征,多态,继承,封装)
Python面向对象的初始 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的 ...
- C#学习笔记7:多态是面向对象的三大特征(封装、继承、多态)之一
多态: 多态是面向对象的三大特征(封装.继承.多态)之一. 什么是多态? 一个对象表现出多种状态. 多态的实现方法: 1.虚方法: 2.抽象方法: 3.接口. PS:New 关键词可以隐藏父类的方法. ...
- OOP面向对象 三大特征 继承封装多态
OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...
- 面向对象的基本特征:封装(接口 、struct、枚举、委托、匿名函数) 继承,多态。
如何理解面向对象的基本特征:封装 我们通过接口 .struct.枚举.委托.泛型.匿名函数的去理解封装 接口 .struct.枚举.委托.泛型.匿名函数有什么区别?我们通过这些IL探究真相,案例如下: ...
- Python全栈--9 __import__ 反射和面向对象基础 self 封装 继承(多继承的顺序) 多态
一.反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...
随机推荐
- 手写MQ框架(四)-使用netty改造梳理
一.背景 书接上文手写MQ框架(三)-客户端实现,前面通过web的形式实现了mq的服务端和客户端,现在计划使用netty来改造一下.前段时间学习了一下netty的使用(https://www.w3cs ...
- C 常用库函数memset,编译器宏定义assert
一. 总览 1.1库函数 函数名 头文件 功能 原型 说明 syslog syslog.h 记录至系统记录(日志) void syslog(int, const char *, ...) __p ...
- 使用 XMLBeans 进行编程
深入考察 XMLBeans 的特性和功能.本文通过一个简单的例子介绍 XMLBeans 技术,然后一步一步地介绍编译和绑定的过程,讨论 XML 游标.标记和 XQuery 表达式等高级特性.本文还 ...
- NOI2019 选做
施工中-- 这里是一个同步赛选手,同步赛打铜了,下面内容来源于互联网,如有雷同敬请谅解-- d1t1 回家路线 d1t1 吐槽 本题首先数据范围出的有点水,其次数据有点水,导致这题真的成了签到题. 现 ...
- ROS 命令行工具的使用
1.roscore 打开一个新的master(master:进程),只能运行一个,运行两个会报错,使用ROS第一步就是要打开roscore 2.rosrun rosrun的使用格式一般为:rosrun ...
- 一、Linux&配置,依赖安装&Tomcat,Mysql,jdk安装
基础知识: 1 OS Operation System 作用:控制硬件,服务软件 2 VMware虚拟机: 虚拟出一台计算机环境 配置两个虚拟网卡,适配器里查看 3 在虚拟机上安装操作系统Linux ...
- sessionManager配置
在sessionManager配置的时候,有两个属性, 在这个类中,cacheManager是要注入到sessionDao中的,但要求sessionDao实现CacheManagerAware接口 C ...
- POJ 3274:Gold Balanced Lineup 做了两个小时的哈希
Gold Balanced Lineup Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13540 Accepted: ...
- python merge、join、concat用法与区别
由于合并变化较大,以后函数可能会修改,只给出一些例子作为参考 总结: merge.join 1.当没有索引时:merge.join为按照一定条件合并 2.当有索引.并按照索引合并时,得到结果为两者混 ...
- R 《回归分析与线性统计模型》page141,5.2
rm(list = ls()) library(car) library(MASS) library(openxlsx) A = read.xlsx("data141.xlsx") ...