面向对象的特征二 继承性
有相同的属性和方法都可以提取出来, 就形成了一个公共的部分,公共的部分形成一个类,其他类有一样的属性和方法的时候 不用在自己类里面在写出来,直接就公共的类中调用即可。
总结,造一个公共类,里面的属性和方法为其他的类有相同的地方,其他的类不用再重复的去写,只需要调用即可。
比如:person类为公共类,student类,worker类,teacher类都有person类中的属性和方法,只需要继承person类即可。
继承关键词:extends
public class student extends person{}
PS:这个时候student类中就有person中所有的属性和方法。这个时候 我们就不用在person类中再写属性和方法。
(可以把之前举例的时候student中所有写的全部删除。已经继承,可以不用写进行调用。
同时构造器也不能在使用this来使用,因为属性我们全部使用的是private修饰的,全部都是私有的
后面会提到一个super关键词,是调用父类中的指定操作。
目前学到的可以使用的可以通过set方法来调用,
public student(String name) {
this.setName(name);
})
剩下的根据类,new对象,通过对象调用方法和之前一样。就不再一一举例。
1、为什么要设计继承性
PS:造了很多类之后,发现这些类有一些公共的结构,那就把这些公共的结构抽取出来造了一个类,然后让
有公共结构的这些类去继承造出来的这一个类,这些类就获取了造成来的类的内容,而这些类内就不必再重复
书写公共的部分,这通过的就是继承性。
或者反过来理解,我造出来一个类,再继续造的类和上一个类有重复的地方,我可以继承上一个类,这样就能获取上一个类的内容。
2、写法。
class a extends b;来实现类的继承。
这样写过之后,就出现一个概念 子类:a;父类(或基类SuperClass):b
PS:不能为了继承而继承。面向对象我们也需要遵循一些天然的共性继承,student和worketr这些具有天然的共性,就可以去继承person,不能写个pig类,也去继承。
3、子类继承父类之后,父类中声明的属性方法,子类就可以获取到。
明确的一点:当父类中有私有的属性或方法时,子类同样可以获取得到,只是由于封装性的设计,使得子类不能够直接使用。
(只有通过公共的方法(get set)来使用)
ps:还要明确一点,继承只继承属性和方法,不继承构造器。因为构造器用的是类名,而每个类的名字是不一样的。
4、子类除了通过继承获取父类的结构之外,还可以定义自己特有的成分。
PS:也就是说除了继承父类的属性和方法外,还可以继续写自己特有的属性和方法。
eg:student类继承了person类中的名字和年龄,以及get set方法,还可以添加自己特有的属性和方法。
"extends":子类是堆父类功能的“扩展”,明确子类不是父类的子集。
PS:子集可以从数学上去理解,就是一个集合的一部分叫子集。例如1到10一共十个数字是一个集合,集合内的双数可以是一个子集。
类的继承性:只支持单继承,只能继承一个类。
反之:一个父类可以有多个子类。
子父类是相对的概念,凡是继承了父类的子类。
随着继承的层次越来越多,越是下面的子类功能就越是完善,因为他具有上面所有类的功能和属性。
继承的类叫做直接父类,继承的类的父类叫间接父类。
eg:a继承b,b是a的直接父类;b又是继承c,c是a的间接父类。
扩展:接口。单继承局限性太强,一旦继承一个之后就不能再继承其他的了,如果想获取更多类的功能,就把那些功能定义为接口,类实现接口,接口可以多个实现,通过实现接口的方式,打破java的单继承。
方法的重写
子类继承父类的方法,不适合,那么就可以进行重写。
PS:子类继承父类,父类的方法不适合子类的使用,就将需要重写的方法重新声明,然后重新编写方法体。
注意:子类中重新声明父类的方法之后,不论方法体是否有改变,皆为重写。
方法的重写: 修饰符 返回值类型 方法名(参数列表){} EG:public void info(int ss){}
1、前提:有子类继承父类
2、子类继承父类以后,若父类的方法对于子类不使用,那么子类可以对父类的方法重写,覆盖,覆写(override)
3、重写规则:
1)、要求子类方法的“返回值类型”,方法名(参数列表)与父类方法的一样。
2)、子类方法的修饰符不能小于父类方法的修饰符
3)、若父类方法抛异常,那么子类方法抛的异常不能大于父类的。
4)、字符类的方法必须同为static,或非static的。
PS:使用private修饰的方法,被重写的时候不认为是重写。因为private方法,可以继承但是无法获取。实际上就可以
理解为,没有继承。
重载和重写
区别:方法重载是在一个类内进行。
方法重写是通过继承关系,修改父类的方法,对父类的方法进行覆盖。
四种权限修饰符
protected 估计是用于继承(只能写方法,属性)
PS:之前讲权限修饰符的时候,说到protected用于继承。
主要功能是:子类继承父类之后,子类和父类不在同一个包内,只要属性是protected,也可以直接调用。
(注意,是调用,不是子类中有protected修饰的属性)
PS:没什么需要重点讲的,主要就是四个修饰符,写一个类,然后同一个包内,和跨包内进行调用就可以了。
面向对象的特征二 继承性相关推荐
- JAVA学习--面向对象的特征二:继承性
* 一.面向对象的特征二:继承性 * 1.为什么要设计继承性? * * 2.通过"class A extends B"类实现类的继承. * 子类:A 父类(或基类 Su ...
- java面向对象的特征二:继承性 —(14)
1.为什么要有类的继承性?(继承性的好处) ① 减少了代码的冗余,提高了代码的复用性 ② 便于功能的扩展 ③ 为之后多态性的使用,提供了前提 图示: 2.继承性的格式: class A extends ...
- 面向对象三大特征——extends继承性
面向对象的特征之二:继承性 一.继承性的好处: 1.1.减少了代码的冗余,提高了代码的复用性: 1.2.便于功能的扩展: 1.3.为之后多态性的使用,提供了前提. 二.继承性的格式: 2.1.clas ...
- 第四章:Java_面向对象编程(二)
目录: 面向对象的特征之二:继承性 方法的重写 关键字super 子类对象实例化的全过程 面向对象的特征之三:多态性 Object类 Junit单元测试类 包装类 1.面向对象的特征二:继承性 1.为 ...
- Java面向对象(二)面向对象的特征 --- 封装 、 继承、 多态
面向对象的特征:封装.继承.多态.(抽象) 一.封装 体现形式: 函数 --- 提高代码的复用性. 属性的私有化 --- 将属性设为私有,通过提供对外的访问方法来间接操作对象属性,可以再方法内对属性做 ...
- 细说面向对象三大特征
一.软件设计的概况 1. 软件的生命周期 产品提出需求 分析以及规划 软件编码及其调试(自测,联调) 上测试环境,给测试人员测试(提bug) 上 linux 生产服务器(运维人员维护,修改bug,系统 ...
- Java基础-面向对象第二特征之继承(Inheritance)
Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
- c++面向对象三大特征封装、继承和多态知识总结
面向对象三大特征:封装,继承,多态: 一.封装:该公开的就公开话,该私有的就隐藏掉,主要是由public,private实现:作用是便于分工和分模块,防止不必要的扩展: 二.继承:就是一种传承,可以把 ...
- java面向对象的特征 —(13)
面向对象的特征一:封装与隐藏 1.为什么要引入封装性? 我们程序设计追求"高内聚,低耦合". 高内聚 :类的内部数据操作细节自己完成,不允许外部干涉: 低耦合 :仅对外暴露少量的方 ...
最新文章
- 《Haskell趣学指南》—— 第1章,第1.2节小朋友的第一个函数
- wait/notify/notifyAll在Object类中
- 5 HBase命令行接口
- 不得不存!UI设计新手不可错过的7条实用法则
- Sun Cluster3.3+Oracle11g配置数据库资源问题
- Win7\xp添加虚拟网Microsoft Loopback Adapter
- 计算机2013知识,【2013年计算机基础知识习题与答案(三)】- 环球网校
- 运用计算机怎么实现自动化,如何用计算机串口实现自动化控制
- 关于事业发展,雷林鹏教你如何找到方向?
- Linux下使用nohup运行python脚本报错:Import error: No module named numpy问题解决
- 定性数据分析中高维列联表分析流程(附R代码)
- org.apache.ibatis.binding.BindingException: Mapper method 'com.hahah.atcrowdfunding.manager.dao.Cert
- C#,深度好文,精致好码,文本对比(Text Compare)算法与源代码
- cd cd~ cd- cd. cd.. cd/ cd./ cd../.. cd!$ cd /home的区别
- Pytorch:图像语义分割-FCN, U-Net, SegNet, 预训练网络
- matlab中的箭头符号怎么打开,MATLAB中上下标、斜体、箭头等符号的使用方法
- 《Heterogeneous Information Network Embedding for Recommendation》 论文分析
- mongoshake
- python中类的继承关系使用什么符号表示_智慧职教: Python中类的继承关系使用( )符号表示?...
- 【考研英语语法】复杂句的逻辑