继承2

class A extends B {.....}

在这里插入图片描述
父类和子类的类加载+构造规则
1.触发子类的加载时,优先处理完父类的加载。
2.子类对象实例化时,优先处理完父类对象的实例化

子类构造方法的规则 - 显示
所有子类中的构造方法,必须通过super()调用父类的一个构造方法
且该语句,必须第一个执行

隐士规则
如果子类中没有写出super(),则隐含着super()调用了父类的无惨构造方法

属性名/方法名的识别
this.xxx 优先查找子类中的属性/方法,没有找到时,继续去匹配父类中的属性和方法

super.xxx 直接去找父类中的属性和方法

子类中存在和父类中相同的属性名和方法名时,使用super较多。

方法的重写(Override)(频繁应用)

  1. 只会发生在子类和父类之间
  2. 子类把父类已经存在的方法,重写了一遍
    1.方法名要求一致
    2.形参列表要求一致
    3.返回值要求一致
    4.访问限定符要求一致
    3.通过子类对象,调用重写的方法时,会执行子类的代码,而不是父类的代码

抽象:通过子类对象,执行方法/访问属性,优先按子类的走,如果子类中不存在,才去找父类的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以执行哪些方法/属性 ,是跟着引用类型走的。
在这里插入图片描述
在这里插入图片描述
多态总结:
1.相同的引用,由于实际指向的对象不同,导致有不同的形态表现
2.语法规则:
1.祖先类的引用可以指向子孙类的对象 - 向上转型(99%)
(object是所有类的祖先,所以object引用可以指向Java中的所有对象)
2.具备哪些能力,看的是引用的类型(实际中使用哪个方法,看的是对象类型)
3.偶尔的情况下,可能需要回归其原本类型 - 向下转型(1%)
1.强制规则语法
2.ClassCastExcetpion
3.instanceof

在这里插入图片描述
静态绑定 static bind : - 发生在静态时期(编译时期)
- 能执行哪些方法,看引用类型

动态绑定 dynamic bind : - 发生在动态时期(运行时期)
- 具体执行的是哪个类中的方法,看对象类型

1 . 其他规则的补充
1.Java中只允许单继承
2.提到继承时,更多的看重 类作为实例化对象的模板的作用(所有的静态属性/静态方法,都不享受继承的规则)
2 . 如何定义无法被重写的方法 - final 关键字修饰方法
3 . 如何定义无法被继承的类 - final 关键字修饰类

final关键字的三个作用: 总体的意思,都是表达“最终的”这个含义
1.修饰变量的定义(属性/静态属性/形参变量/局部变量),该变量只允许有一次赋值的机会
2.修饰类的定义:这个类不能被继承,这个类不能有子类
3.修饰类中的普通方法,这个类子类中,不能重写被final修饰的方法。

抽象类:无法实例化出对象
通过abstract(抽象)修饰类的定义
抽象方法 - 定义在父类中,专门留给子类去重写的方法(父类只有方法签名,没有实现)

public abstract class SuperClass {
    // abstract 修饰的方法,是抽象方法
    // 特点是,只有方法签名,没有方法体
    public abstract void method();
}

在这里插入图片描述

抽象方法只能出现在抽象类中,而抽象类中不一定有抽象方法。
抽象类 vs 普票类 区别:是否可以实例化对象

abstract在Java中的两个作用:
1.修饰类的定义,类变成抽象类。(则该类无法被直接实例化)
2.修饰方法的定义:
1.要求该类必须是抽象类
2.该方法只需签名,无需方法体。(只说明目的,没有怎么做)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值