多态
## 编程中的多态
一个父类根据new不同的子类对象,调用同一个方法,可以产生不同的结果
父类 = new 子类对象();
# 多态的前提(全部满足以下条件)
1.必须有继承体系
2.必须有方法的重写
3.必须使用一种写法:向上转型 父类 对象名 = new 子类对象();
# 验证多态性
根据new不同的子类对象,调用同一个重写的方法,产生不同结果
# 多态的弊端
无法调用子类特有的属性和方法
解决方案:向下转型
# 向上转型:父类引用 指向子类对象
# 向下转型:将子类对象重新 “强转” 回自己本身的类型
1.((Cat)an).jiao();
2.Cat c = (Cat)an;
c.jiao();
运算符:A instanceof B 判断A对象在内存是否是B类型
## 多态的应用
# 当数组中存储的是父类的类型时,所有的子类对象都能存在该数组中
# 当一个方法的参数类型是父类的类型时,所有的子类对象都能传参
# 返回值时父类的类型。所有的子类对象都会返回出来
## 多态注意事项
# 多态是方法的多态,属性没有多态
# 父类和子类,有联系 类型转换异常! ClassCasException!
# 存在条件:继承关系,方法需要重写,父类引用指向子类对象!Father f1=new Son();
# 不能重写的方法:
static方法,属于类,不属于实例
final 常量;
private方法;
## instanceof (类型转换) 引用类型,判断一个对象是什么类型~
# System.out.println(X instanceof Y);//判断X和Y是否有父子关系,没有就报错
##