内容简介:其实在我们面向对象这一阶段的学习中,我们就是围绕Java的三大特性(封装、继承、多态)来讲解的,在上一掌内容中我们讲解了一部分封装的有关知识,今天我们来重点学习继承的学习。
第二阶段 JAVA 面向对象
第二章 继承
其实在我们面向对象这一阶段的学习中,我们就是围绕Java的三大特性(封装、继承、多态)来讲解的,在上一掌内容中我们讲解了一部分封装的有关知识,今天我们来重点学习继承的学习。
2.1 继承的基本认识
概述:
继承就是在一个已有类的基础上派生出新类
子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
(父类更通用,子类更具体)
功能:有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的 基础上,还可以定义自己的新成员。
格式:class 子类名extends父类名 {}
好处:
A:提高了代码的复用性
B:提高了代码的维护性(通过少量的修改,满足不断变化的具体要求)
C:让类与类产生了一个关系,是多态的前提
要求:
有共同的属性或操作
有细微的差别
2.2 继承的弊端
A:让类的耦合性增强。这样某个类的改变就会影响其他和该类相关的类
·原则:低耦合,高内聚。
·耦合:类与类的关系
·内聚:自己完成某件事情的能力
B:打破了封装性
特点:
A:Java只支持单继承,不支持多继承(C++支持)
B:Java支持多层继承(继承体系)
儿子继承爸爸 爸爸继承爷爷 儿子可以通过爸爸继承爷爷
注意:
A: 子类只能继承父类所有非私有成员(成员方法和成员变量)
B:子类不能继承父类的构造方法,但是可以通过super关键字去访问方法
C: 不要为了部分功能而继承(多层继承会使得子类继承多余的方法)
2.3 Java继承中的成员关系
A:成员变量
a:子类的成员变量名称和父类中的成员变量名称不一样,这个太简单
b:子类的成员变量名称和父类中的成员变量名称一样,这个怎么访问
子类的方法访问变量的查找顺序:
·在子类方法的局部范围找,有就使用。
·在子类的成员范围找,有就使用。
·在父类的成员范围找,有就使用。
·找不到,就报错。
2.4 Super 关键字
不仅要输出局部范围的num,还要输出本类成员范围的num
使用super关键字
this 和super的区别
this 代表本类对应的引用
Super 代表父亲存储空间的标识(可以理解为父亲引用)可以操作父亲 的成员
使用方法:
A:调用成员变量
·this.成员变量 调用本类的成员变量
·super.成员变量 调用父类的成员变量
B:调用构造方法
·this(...) 调用本类的成员变量
·Super(...)调用父类的成员变量
C:调用成员方法
·this.成员方法 调用本类的成员方法
·super.成员方法 调用父类的成员方法
2.5 继承中构造方法的关系
A:子类中所有的构造方法默认都会访问父类中空参数的构造方法
B:理由:
因为子类会继承父类中的数据,可能还会使用父类的数据
所以,子类初始化之前,一定要先完成父类数据的初始化
注意:子类每一个构造方法的第一条语句默认都是:super()
如果父类没有无参构造方法,那么子类的构造方法会出现什么现象?
报错
解决方法:
A:在父类中加一个无参构造方法
B:通过使用super关键字去显示的调用父类的带参构造方法
C:子类通过this去调用本类的其他构造方法
子类中一定要有一个去访问父类的构造方法,否则父类数据就没 有初始化。
注意事项;
this(...)或者super(...)必须出现在第一条语句上。
否则就可能对父类的数据进行了多次初始化
2.6 继承中成员方法的关系
子类中的方法和父类中的方法声明一样
通过子类调用方法:
·先找子类中,看有没有这个方法,有就使用
·再看父类中,看有没有这个方法,有就是用
·如果没有就报错(不去看父亲的父亲)
2.7 方法重写(override)
方法重写:子类中出现了和父类中方法声明一模一样的方法
(区别于方法重载,方法重载仅仅是方法名一样)
子类重写的应用:当子类需要父类的功能,而功能主体子类又有自己特有的内容时,这样既沿袭了父类的功能,又定义了子类特有的功能
super. 方法名 ( 参数名 ); //避免重复代码
2.8 final关键字
final 关键字声明类可以把类定义为不能继承的,即最终类;
或者用于修饰方法,该方法不能被子类重写:
Final修饰变量的初始化时机
·被final修饰的变量只能赋值一次
·在构造方法完毕前(非静态的常量)
//声明方法
final class 类名{//类体}
//声明类
修饰符(public/private/default/protected) final 返回值类型 方法名(){//方法体}
结尾:
如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家 !^_^
如果能帮到你的话,那就来关注我吧!
一个坚持推送原创Java技术的公众号:理想二旬不止
以上所述就是小编给大家介绍的《关于继承的那些事!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 028.Python面向对象继承(单继承,多继承,super,菱形继承)
- PHP类继承、接口继承关系概述
- 面向对象:理解 Python 类的单继承与多继承
- java入门第二季--继承--java中的继承初始化顺序
- 前端基本功(七):javascript中的继承(原型、原型链、继承的实现方式)
- 组合还是继承,这是一个问题?——由模式谈面向对象的原则之多用组合、少用继承
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Structures and Algorithms in Java
Robert Lafore / Sams / 2002-11-06 / USD 64.99
Data Structures and Algorithms in Java, Second Edition is designed to be easy to read and understand although the topic itself is complicated. Algorithms are the procedures that software programs use......一起来看看 《Data Structures and Algorithms in Java》 这本书的介绍吧!