资讯专栏INFORMATION COLUMN

关于继承的那些事!

soasme / 2190人阅读

摘要:格式子类名父类名好处提高了代码的复用性提高了代码的维护性通过少量的修改,满足不断变化的具体要求让类与类产生了一个关系,是多态的前提要求有共同的属性或操作有细微的差别继承的弊端让类的耦合性增强。

第二阶段 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技术的公众号:理想二旬不止

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74671.html

相关文章

  • 【面试】Java基础那些-Two

    摘要:前言面试中对于技术职位,一般分笔试与面谈,如果面试官的一些小问题你可以立马找到对应的知识点扩展开来,那么这就是你的优势,本系列将讲述一些面试中的事,不会很详细,但是应该比较全面吧。 前言 面试中对于技术职位,一般分笔试与面谈,如果面试官的一些小问题你可以立马找到对应的知识点扩展开来,那么这就是你的优势,本系列将讲述一些java面试中的事,不会很详细,但是应该比较全面吧。 主要内容 pa...

    you_De 评论0 收藏0
  • 关于CSS Reset 那些(四)之 构架CSS基础样式库

    摘要:现在回到我们这一章节的标题,将它做下补充关于那些事四之基于构架基础样式库基础库构思为什么要做基础库我上一章节的末尾抛出了几个问题假设你要做一个游戏单页面,网页上并不存在表单内容,那么你就要移除一些冗余的代码,开始自定义样式来满足自己的需求。 前言 先来回顾一下前几章节,我们都说了哪些内容: CSS Reset 历史 与 Normalize.css 介绍 Normalize.css...

    mj 评论0 收藏0
  • 关于CSS Reset 那些(四)之 构架CSS基础样式库

    摘要:现在回到我们这一章节的标题,将它做下补充关于那些事四之基于构架基础样式库基础库构思为什么要做基础库我上一章节的末尾抛出了几个问题假设你要做一个游戏单页面,网页上并不存在表单内容,那么你就要移除一些冗余的代码,开始自定义样式来满足自己的需求。 前言 先来回顾一下前几章节,我们都说了哪些内容: CSS Reset 历史 与 Normalize.css 介绍 Normalize.css...

    Yu_Huang 评论0 收藏0
  • 【JS基础】原型对象那些(一)

    摘要:通过同一个构造函数实例化的多个实例对象具有同一个原型对象。所以当给原型对象赋值一个新对象时,切记将原型对象的指回原构造函数以上就是本次分享的内容,关于原型对象的其他知识,下一篇基础原型对象的那些事二会讲到。 谈起js的基础,绕不过去的坎就是:原型链、作用域链、this(em...好吧,还有闭包),今天总结一下关于原型对象的一些知识,供自己和大家复习。 概念理解 什么是原型对象呢?有以下...

    edgardeng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<