IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java继承中的细节 -> 正文阅读

[Java知识库]java继承中的细节

继承可以解决代码复用,当多个类存在相同的属性(变量),和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends来声明继承父类即可。

基本语法:

class 子类 extends 父类{

}

1)子类会自动拥有父类定义的属性及方法

2)父类又叫超类或基类

3)子类又叫派生类

继承优点:

A: 代码的复用性提高

B: 代码的扩展性和维护性提高了

继承的细节:

1)子类继承了所有的属性和方法,非私有属性和方法在子类可以在子类直接访问但私有属性和方法不能在子类直接访问,要通过父类所提供的公共的方法进行访问。

2)子类必须调用父类的构造器,完成父类的初始化

3)当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中使用super去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不通过

4)如果希望指定去调用父类(基类)的某个构造器,则显示的调用一下:super(参数列表)

5)super在使用时,只能在构造器中使用且需放在构造器第一行,

6)super()和this()都只能放在构造器的第一行,因此这两个方法不能存在于一个构造器内(this()的含义为调用本类无参构造器,有参即在括号内加)

7)java的所有类都是Object类的子类,Object类是所有类的基类

8)父类构造器的调用不限于直接父类!将一直追溯到Object类(顶级父类)

9)子类最多只能继承一个父类(指直接继承),即java中是单继承机制(如果想要得到多继承的效果,不妨再在直接继承的子类再次进行继承定义)

10)不能滥用继承,子类与父类之间必须满足is-a的逻辑关系(即集合是否有相重合的部分)

super关键字

super代表父类的引用,用于访问父类的属性,方法以及构造器

基本语法:

a:访问父类的属性,但不能访问父类的private属性:super.属性名

b:访问父类的方法,但不能访问父类的private方法:super.方法名(参数列表)

c:访问父类的构造器:super(参数列表);只能放在构造器中的第一句,且只能出现一句

super的便利及细节:

1)调用父类构造器的好处(分工明确:父类构造器用于父类属性的初始化,子类构造器用于子类属性的初始化)

2)当子类中有和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super。如果没有重名,使用super、this、直接访问都是一样的效果

3)super的访问不限于直接父类,如果隔代父类和本类中有同名的成员,也可以使用super去访问隔代类的成员;如果多个基类(上级类)都有同名成员,使用super访问遵循就近原则

super与this的比较

区别点thissuper
访问属性访问本类中的属性,如果本类没有此属性则从父类中继续查找从父类开始查找属性
调用方法访问本类中的方法,如果本类中没有此方法则从父类继续查找直接从父类开始查找方法
调用构造器调用本类构造器,必须放在构造器首行调用父类构造器,必须放在子类构造器首行
特殊表示当前对象子类中访问父类对象

方法重写/覆盖override

方法覆盖(重写):子类有一个方法,和父类的某个方法名称、返回类型、参数一样,那么我们就说子类这个方法覆盖了父类的方法

注意事项以及使用细节:

1)子类方法的形参列表,方法名称,要和父类方法的形参列表,方法名称完全一样。

2)子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类

3)子类方法不能缩小父类方法的访问权限:public>protected>默认>private

重写与重载的比较:

名称发生范围方法名参数列表返回值类型修饰符
重载(overload)本类必须一样必须不一样(类型,个数或者顺序其中一种)无要求无要求
重写(override)父子类必须一样必须一样子类重写的方法返回的类型和父类返回的类型一致或者是其子类子类方法不能缩小父类方法的访问范围

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 12:40:04  更:2021-12-13 12:42:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:05:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码