------------翁恺老师授课
第四次课程 继承与多态
继承:子类继承父类的成员变量及方法
多态:方法的重载
class 子类 extends 父类{
//为什么使用extends呢? 因为子类是单数,所以加“s”
}
子类可以继承父类的静态变量和方法,但不能覆盖
哪些成员属于可访问?
由public、private、protected、缺省决定
protected----只有在包内其他类、自己和子类可以访问
缺省----只有包内其他类可以访问。如果子类和父类在同一包内,可以访问;否则,相当于private,不可以访问。
为什么一定要先父类后子类呢?-----子类继承并使用父类的成员变量,必须先在父类中申明这个变量。
构造方法执行流程:
int i;//子类
super.i;//父类
多态变量可以保存其所声明的类型或该类型的任何子类型(同一款玻璃杯子,大杯子可以装其容量之下的杯子里的水)。动态类型(在运行时所管理的对象类型)。
向上造型:把子类的对象赋给父类的变量时发生向上造型。一次性,暂时看做其他类型。可以将实例化后的子类赋给参数是父类的方法。
子类的对象可以被当做父类的对象来使用:
向下造型:高赋给低。只有当类赋值的右边变量管理的类型与左边的静态类型一致时才会造型成功,且必须有强制发生造型的格式。
class 类A extends 类B{
.....
public static void main(String[] args){
类A a = new 类A();
类B b = new 类B();
b = a; // 向上造型
类A c;
c = b; //直接赋是不可以的,必须经过向下造型
c = (类B)b; //向下造型,此时b的动态类型是类A
}
}
多态:一个方法可以有多种实现版本
调用哪一个方法取决于调用该方法的对象所属的类并向上寻找。 当前对象所属类---->父类---->祖先类
类型系统会根据方法的参数或调用方法的对象自动选择一个方法执行,不会混淆。
原文:https://www.cnblogs.com/yuecheng/p/12706186.html