Java_继承
1 继承的好处
-
代码的复用性提高了
-
代码的扩展性和维护性提高了
2 继承的细节
补充细节如下
访问修饰符号
public 同类 同包 子类 不同包
protected 同类 同包 子类
默认 同类 同包
private 同类
修饰符使用的注意事项
1. 修饰符可以用来修饰类中的属性,成员方法以及类
2. 只有默认的和public才能修饰类,并且遵循上述访问权限的特点
3. 成员方法的访问规则和属性完全一样
-
子类必须调用父类的构造器,完成父类的初始化
-
当创建子类对象时,不管使用子类哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过
-
如果希望指定去调用父类的某个构造器,则显式的调用一下 : super(参数列表)
-
super在使用时,需要放在构造器的第一行
-
super()和this()都只能放在构造器的第一行,以此这两个方法不能共存在一个构造器
-
java所有类都是Object类
-
父类构造器的调用不限于直接父类!将一直往上追溯到Object类(顶级父类)
-
子类最多只能继承一个父类(指直接继承),即java中是单继承机制
-
不能滥用继承,子类和父类之间必须满足 is—a 的逻辑关系
3 如果父类和子类都有同一个属性(比如name)那么查找时遵循以下原则
-
首先看子类是否有该属性
-
如果子类有这个属性,并且可以访问,则返回信息
-
如果子类没有这个属性,就看父类有没有这个属性(如果父类有这个属性,并且可以访问,就返回信息...)(相当于创建一个新的String类把父类的String类给覆盖了)(但是父类的String类也可以访问,比如用方法来访问)
-
如果父类没有,就按照(3)的规则继续找上级父类,直到Object...
4 this和super区分
NO. | 区别点 | this | super |
---|---|---|---|
1 | 访问属性 | 访问本类中的属性,如果本类没有此属性则从父类中继续查找 | 从父类开始查找属性 |
2 | 调用方法 | 访问本类中的方法,如果本类没有此方法则从父类中继续查找 | 从父类开始查找方法 |
3 | 调用构造器 | 调用本类构造器,必须放在构造器的首行 | 调用父类构造器,必须放在子类构造器的首行 |
4 | 特殊 | 表示当前对象 | 子类中访问父类对象 |
1 基本介绍
super代表父类的引用,用于访问父类的属性、方法、构造器
2 基本语法
-
-
访问父类的方法,不能访问父类的private方法: super.方法名(参数列表)
-
访问父类的构造器 super(参数列表);只能放在构造器的第一句,只能出现一句!
3 super给编程带来的便利/细节
-
调用父类的构造器的好处(分工明确,父类属性由父类初始化,子类的属性由子类初始化)
-
当子类中有和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super。如果没有重名,使用super,this,直接访问是一样的效果
-
super的访问不限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员,如果多个基类(上级类)中都有同名的成员,使用super访问遵循就近原则 A -> B -> C
4 找方法时,顺序是:
-
先找本类,如果有,则调用
-
如果没有,则找父类(如果有,并可以调用,则调用)
-
如果父类没有,则继续找父类的父类,整个规则,就是一样的,直到Object类
提示:如果查找方法的过程中,找到了,但是不能访问,则报错
如果查找方法的过程中,没有找到,则提示方法不存在
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了