什么是多态?
同一个引用类型,使用不同的实例来执行不同的操作;
同一个父类,使用不同的子类对象执行不同的操作。
多态的实现:
1、声明父类创建子类(向上转型:子类转为父类 自动类型转换)
例如:把狗狗类变成宠物类使用
Pet dog=new Dog();
例如:把猫类变成宠物类使用
Pet cat=new Cat();
注意:
1、多态一定要有继承关系
2、子类重写父类的方法
3、父类引用指向子类对象
2、将父类强制转换为子类,前提必须有继承关系(向下转型 父类转换为子类 强制类转换)
例如:将宠物强制变为我狗狗,才能使用特有方法
Dog dog=(Dog)pet;
dog.swimming();
例如:将宠物强制变为猫类使用,才能使用特有方法
Cat cat=(Cat)pet;
cat.patree();
注意:向下转型时,必须转换位父类指向的真实子类
强制转换的类型必须是原来创建的子类类型
实现多态的两种形式:
1、使用父类作为方法的形参实现多态
2、使用父类作为方法的返回值实现多态
instanceof运算符:
判断对象是否引用某个类或接口
例如:pet instanceof Dog 如果pet是Dog创建的对象,返回true,否则返回fslae
什么样的情况使用多态?
1、子父类关系
2、重复使用子类的时候
什么情况需要向下转型(强制转换)?
1、调用子类特有方法时
2、调用子类特有属性
例如: 主人喂养宠物 鸡、鸭、兔子、老鼠....
老板发工资(人) 管理层,后勤,保安,前台...
媒婆介绍相亲 凤姐、石榴姐、桥碧萝.....
1、分析类
父类:相亲
子类:凤姐、石榴姐、桥碧萝
调用类(多态):jieshao(相亲人 人)