第一节:多态概述 同一个实现接口,使用不同的实例而执行不同的操作
1、多态指对象的多种形态:引用多态与方法多态
注意:
A:继承是多态的实现基础
B:方法重写也是多态的体现
2、引用多态
A:父类的引用可以指向本类的对象:父类 对象名 = new 父类();
B:父类的引用可以指向子类的对象:父类 对象名 = new 子类();——多态的体现
注意:该对象调用的方法是从父类继承或子类重写的方法,并且会丢失子类特有的方法。
注意:
A:子类的引用不可以指向父类的对象
B:B例的话,父类对象不能直接调用子类的独有方法(只能访问父类继承给子类的东西)
3、方法多态
A:创建本类对象时,调用的方法为本类方法
B:创建子类对象时,调用的方法为子类重写的方法或者继承的方法
public void feed(Pet pet){
pet.eat(); //传入类的类型 执行相应类的eat方法
}
public static void main(String[] args) {
Master master = new Master();
Pet pet = new Dog("旺财","金毛"); // 将dog向上转型
master.feed(pet); //将转型后的pet(dog)传入feed方法 这时pet已经是dog类
}
——
——
第二节:引用类型转化
引用类型转换:
1、向上类型转换(隐式/自动类型转换),是小类型到大类型的转换。
如:Dog dog=new Dog();Animal animal=dog;//正确,自动类型提升,向上类型转换
转换后子类可以使用父类所有方法 但是会丢失子类自己的方法
2、向下类型转换(强制类型转换),是大类型到小类型的转换(存在风险,溢出)(还原子类的真实面目)
如
:Pet pet = new Dog();
Dog dog=(Dog) pet ; //向下类型转换 转换后可执行dog类其他的方法
instanceof 运算符
dog instanceof Dog (dog对象如果属于Dog类型返回ture) 判断真实指向什么类型
软件使用技巧:
1、子类方法名点中——Ctrl+1——可以将所有抽象方法补全。
2、Ctrl+1——修改类名,连着文件名一起修改。