多态
就是多种事物的表现形式,或者说是一种事物的多种形态
也是一种功能的多种实现方法
多态的最终表现形式:
多态就是父类引用子类对象
实现多态的前提:
要有继承关系或者要有接口的实现
多态调用成员变量
只运行父类,或者说左边指定的引用类型
多态调用成员方法
如果子类有重写,name就运行子类的重写,如果没有,那就找父类
编译看父类,运行看子类
如果没有方法的重写,那么多态也就没有意义
Person p = new Person();
Student s = new Student();
//正常调用 : p或者s调用的成员 : 1)自己类中存在的成员 2)从父类中继承的成员
//多态
Person ps= new Teacher();
//多态的调用
System.out.println(ps.str);
ps.test();
转型
基本:数据类型转换
自动类型的提升: 小---->大 如:long l=i;
强制类型的转换:就是从大到小 如:int
小范围类型 变量=(小范围类型)大范围类型;
引用:转型
小:子类 大:父类
向上转型:子类转父类,从小转到大,也是自动类型的提升
向下转型:父类转子类,从大到小,也是强制类型装换
子类类型 变量=(子类类型)父类引用;
需求:就是当多态不能调用子类类型的时候,可以向下转型,从而使用子类中独有的 变量
java.lang.ClassCastException类型转换异常
在使用向下转型的时候,如果转成其他的子类类型,就会遇到这个异常
Instansof 运算符
引用instanceof类型:判断前面的引用是否指向后面类型的对象或者后面类型的子类对象,如果结果是则返回true,如果不是则返回fales