面向对象第二个特征-继承(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,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...
随机推荐
- 树莓派中实现ll命令
用管了centos的童鞋们,到了一个没有ll命令的环境里,那是多么的痛苦,在baidu后,将实现方法记录如下 方法一: echo "alias ll='ls -l'" >&g ...
- Mybatis入门(六)联查之一对多
上一章说了多对一,很多学生被一个老师教,这一章是一个老师教很多学生 目录基本没有变化只是改了配置文件: 2.配置文件: TeacherMapper接口类: package com.hdlf.dao; ...
- 通过开源项目免费申请 IntelliJ IDEA license(激活码)
通过github开源项目免费申请 IntelliJ IDEA license(激活码) 我用来申请的github开源项目:https://github.com/Linliquan/springboot ...
- ThreadLocal的原理和在框架中的应用
ThreadLocal的原理和在框架中的应用 博客分类: java基础 框架多线程SpringthreadDAO 概述 我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久 ...
- arm linux 移植 gdb/gdbserver
背景 调试工具gdb的使用对于嵌入式Linux开发人员来说是一项不可少的技能. 目前,嵌入式 Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机 ...
- uni app中关于图片的分包加载
因为在项目中使用了大量的静态资源图片,使得主包体积过大, 而把这些图片全部放到服务器又有点麻烦,就想能不能把图片也分包,但是直接放在分包下的话导致图片资源找不到了, 在社区中看到大佬分享的十分有用,特 ...
- idea 将部分class文件打包成jar使用
工作中有时候有太多模块堆放一块比较混乱,将某个功能(例如:三方支付)所需要的模块打包成jar使用起来会方便点. 步骤如下: 选择 Empty,然后为自己打的jar起个名字 然后在myjar上面右键 创 ...
- R语言 几个易错的地方
1.列表与向量 定义一个向量,然后向内添加元素,得到一个长向量列表: > a = c() #定义一向量 > for (i in 1:5) + a = c(a,i) > a [1] 1 ...
- docker centos 镜像中安装python36详解!生成centos+python36的基础镜像
获取centos镜像docker pull centos:7.4.1708 启动并进入centos的容器docker run -i –t centos /bin/bash下载安装python编译环境依 ...
- centos7创建ssh公钥
步骤1:使用ssh-keygen命令创建公钥和私钥 [root@model /]# [root@model /]# ssh-keygen -t rsa -P '' Generating public/ ...