美文网首页
JaveSE进阶(继承,方法重写)

JaveSE进阶(继承,方法重写)

作者: 扶光_ | 来源:发表于2023-07-25 20:37 被阅读0次

一,继承

关键extends,用这个关键字我们可以让一个类和另一个类建立起父子关系

public class Student extends People{}
我们称子类为student,父类为people
作用,子类继承父类就可以使用父类的属性和方法

当我们开发过程中会有很多相同的属性和方法

继承
继承
提高了代码的复用性,减少冗余

比如我们要做一个系统,其中系统角色分为学生,老师
学生(姓名,学号,性别,查看成绩)
老师(姓名,教师号,性别,查看成绩,录入成绩)
所以我们就可以将相同的属性和方法放在一个父类中,通过继承来实现功能

  • 内存中是如何工作的
    在堆内存是是一个地址,但是这个地址空间中分为两个空间,一个是父类(super)空间,一个是子类空间(this)

二,继承的特点

  • 1子类可以继承父类的属性和行为,但是子类不能继承父类的构造器
  • 2java只能继承一个直接父类
  • 3java不支持多继承,但是支持多层继承
  • 4java所有的类都是Object类的子类

子类是否可以继承父类的私有成员呢?
其实是继承了的,只是不能直接访问


子类是否可以继承父类的静态成员
并不是继承关系,static修饰的本身就是共享的,只有一份

继承后在子类中访问成员变量/方法采用就近原则
先找子类局部,再子类成员范围,再子类

如果子类和父类中出现了重名的成员,会优先使用子类的,那么我们想使用父类的该怎们去做呢
在子类中访问父类的成员用super

三,方法重写

在继承体系中子类出现了和父类一模一样的方法声明,我们就称子类这个方法是重写的方法

应用场景

  • 当子类需要父类的功能,但父类的该功能不完全满足自己的需求
  • 子类可以重写父类中的方法

旧手机(父类)的功能只能是打电话,发信息
新手机(子类)的功能需要基本的打电话下支持视频,基本的发信息需要发送语言


image.png

重写方法的名称,形参列表必须与被重写方法必须一模一样
私有方法子类不允许被重写
子类重写父类方法时,访问权限必须大于等于父类

四,子类继承后构造器的特点

  • 子类中所有的构造器默认都会先访问父类中无参的构造器,再执行自己的

这是为什么呢?(先有爸再有儿子)
子类在初始化的时候可能会用到父类的数据,如果这时父类的数据并没有完成初始化,那么子类就无法使用父类的数据

  • 子类初始化之前,一定要调用父类的构造器先完成父类数数据空间的初始化
    子类的构造器默认第一行都有一个super()默认去找父类的无参构造器去执行

  • super调用父类的有参数构造器作用
    1 初始化继承自父类的数据


this调用本参数构造器
如我们让用户填写个人信息年纪不填写时默认给18
public Student(String name){
this(name,"18");
}

相关文章

网友评论

      本文标题:JaveSE进阶(继承,方法重写)

      本文链接:https://www.haomeiwen.com/subject/qkhcpdtx.html