千锋学习之面向对象第三天

12.方法的覆盖/重写(Override)
1). 当父类提供的方法无法满足子类需求时,可以再子类中定义和父类相同的方法进行覆盖.
2). 要求:
a).方法名,参数列表,返回值类型,必须与父类完全相同.
b).访问修饰符应与父类相同或者比父类更宽泛.
3).执行机制:子类覆盖父类方法后,优先执行子类覆盖后的方法.

千锋学习之面向对象第三天
13.Super关键字 :
I.第一种用法: 在子类中,可以通过”super.”的形式访问父类的属性和方法,可解决一定的属性遮蔽,方法覆盖后的父类成员调用问题.
II.第二种用法: super()表示在子类构造方法的首行,调用父类的无参构造方法.
14.继承关系下的对象创建:
I.继承关系下,构建子类对象时,会先构建父类对象.
II.由”父类共性”+”子类独有”组合成一个完整的子类对象.
千锋学习之面向对象第三天
15.继承关系下的对象创建流程:
I.开辟父类和子类的空间.
II.构建父类对象
III.初始化自身属性
IV.执行自身构造方法中的逻辑代码.
千锋学习之面向对象第三天
Ps: super()表示调用父类无参构造方法.如果没有显示书写,隐式存 在于子类构造方法的首行.
16.注意:
I.如果子类构造方法中,没有显示定义super()或者super(实参),则默认提供super().
II.同一个子类构造方法中,super() , this()不可同时存在.
千锋学习之面向对象第三天
一: 多态
1.概念: 父类引用指向子类对象,从而产生多种形态
2.构成对台的前提, 二者之间必须具有直接或间接的继承关系,父类引用指向子类对象,进而形成多态.
3.父类引用仅可调用父类中所声明的属性和方法,不可调用子类独有的属性和方法.
千锋学习之面向对象第三天
4.多态的两种应用场景:
1). 场景一: 使用父类作为方法的形参,实现多态.
千锋学习之面向对象第三天
千锋学习之面向对象第三天
2). 场景二: 使用父类作为方法返回值实现多态,使方法可以返回不同的子类对象.
千锋学习之面向对象第三天
5.装箱和拆箱
1). 装箱: 父类引用中保存真实子类对象,称为向上转型(多态核心概念).
2). 拆箱: 将父类引用中的真实子类对象,强转回子类本身类型,称为向下转型.
. 注意: 向下转型时,如果父类引用中的子类对象的类型与目标类型不匹配,则会发生类型转换异常(java.lang.ClassCastException).
千锋学习之面向对象第三天
千锋学习之面向对象第三天
6.instanceof关键字:
1). 语法: 父类引用 + instanceof + 目标类型(返回boolean类型结果).
千锋学习之面向对象第三天
7.多态的总结:
1). 多态的两种应用场景:
a). 使用父类作为方法实参,实现多态.
调用方法时,可传递的实参类型包括: 本类型对象+其 所有的子类对象.
b). 使用父类作为方法返回值,实现多态.
调用方法后,可得到的结果类型包括: 本类型对象+其 所有的子类对象.
2). 多态的作用:
a). 屏蔽子类间的差异.
b). 灵活,耦合度低.
时间与空间的平衡,效率与安全的平衡