多态
多态:一个事务具备的不同形态,叫多态
- 实例:
。你:现在在教室里,你的形态是学习(学生形态)
出去逛商场,你的形态是顾客
回家路上,发现一个孩子落水,英雄形态
对象的多态性
- 对象多态性前提:
。要有继承或者接口实现
。方法的重写
。父类或者接口的引入变量,指向自己的子类或者实现类对象(定义) - 子类父类多态实现
- 抽象类和子类
public abstract class Persion {
public abstract void eat();
}
public class Student extends Persion{
@Override
public void eat() {
System.out.println("吃吃吃");
}
}
public class Test03 {
public static void main(String[] args) {
Persion persion=new Student();
persion.eat();
}
}
- 接口和实现类
多态的实现细节
- 多态的程序中,子类父类中成员变量特点
。编译期:看父类中是否由这个变量,如果有编译成功,没有编译失败
。运行期:运行的是父类中的成员变量 - 多态的程序中,子类父类中成员方法特点
。编译期:看父类中是否有这个方法,如果有编译成功,没有编译失败
。运行期:运行子类的方法重写 - 小总结:Fu f=new Zi();
。成员变量:编译看左边,运行看左边
。成员方法:编译看左边,运行看右边
为什么编译是父类,运行是子类(成员方法)
●多态的好处和弊端:
。好处:运行子类的重写方法,多态程序中可以随时扩展子类对象
。弊端:多态中,能调用子类父类的共有成员,不能调用子类的特有成员
类型转换时候出现的异常问题
类型转换异常:ClassCastException
解决异常的出现:关键是在要转换的对象上,判断这个对象到底是什么对象
- 运算符 instanceof 作比较
。比较结果是布尔类型
。instanceof 比较出要转换的对象是哪个类的对象
。语法:
引用类型变量 instanceof 类名
例子:a instanceof Cat 含义:a是不是Cat对象呢
多态案例
需求:有一台笔记本电脑,笔记本上面有接口存在USB,USB是真实存在的接口,使用笔记本的人可以向接口上连接一些外接设备,鼠标、键盘、手机、打印机…
笔记本的厂家,不会预先想到USB接口上,会连接哪些设备
设计一台笔记本电脑,出现USB接口,可以连接任意的外接设备
核心技术点:方法的参数是接口的类型,调用方法传递实现类对象,多态调用,执行实现类的重写方法