面向对象第二个特征-继承(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,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...
随机推荐
- android中按back键返回上一个activity,如何重新调用上一个activity的oncreate方法?
默认情况下是不会调用的. @Override public void onBackPressed() { String titleStr = edittitle.getText().toString( ...
- Outer()函数
转载:https://bbs.pinggu.org/thread-7078237-1-1.html R语言中的outer()函数,名为内积函数,但是他执行的功能并不是解析几何中的内积.那该函数到底发挥 ...
- partialview 用法
using MvcApplication1.Models; @model MvcApplication1.Models.UserInfoModel @{ ViewBag.Title = &q ...
- Python学习笔记之基础篇(二)python入门
一.pycharm 的下载与安装: 使用教程:https://www.cnblogs.com/jin-xin/articles/9811379.html 破解的方法:http://xianchang. ...
- Python3 中 的 绝对导入 与 相对导入
背景: 在学习tf的时候,看到了from __future__ import absolute_import,所以登记学习一下. 概览: 一般模块导入规则: import xxx时搜索文件的优先级如下 ...
- SQLyog连接报错 Error No.2058 Plugin caching_sha2_password could not be loaded
参考链接:https://blog.csdn.net/qq_22766431/article/details/80628583 win10系统更新安装Mysql8.0,连接SQLyog的时候出现下面错 ...
- ROS常用库(五)navigation之Tutorials
一.TF 详见古月居 https://www.guyuehome.com/355 重点:广播TF,订阅,编译时Cmakelist添加编译选项 broadcaster.sendTransform( tf ...
- spring core:@AliasFor的派生性
spring对Annotation的派生性应用可谓炉火纯青,在spring core:@Component的派生性讲过支持层次上派生性,而属性上派生的需求则借助了@AliasFor,它是从spring ...
- 【LOJ6498】「雅礼集训 2018 Day2」农民
题面 solution 直接暴力模拟,原数据可获得满分的成绩. 对于每个点,其父亲对其都有一个限制.故我们只需要判断当前点到根的路径上的限制是否都能满足即可. 考虑用树剖+线段树维护这个限制.考虑到翻 ...
- Javascript获取当前鼠标在元素内的坐标定位
代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...