多态的应用(精通)
一 直接只用多态(父类引用指向子类对象)
Student s = new PrimaryStudent();
二 使用父类作为形参实现多态
当形参是普通类时:此时方法的本质是希望传入的是该类的对象/匿名对象/匿名内部类;
当形参是抽象类时:此时方法的本质是希望传入的是该类的子类对象/匿名内部类;
当形参是接口时,此时方法的本质是希望传入的是该接口的实现类对象/匿名内部类。
三 使用父类作为返回值实现多态
当一个方法的返回值是一个普通类时:此时方法的本质是希望返回的是该类的对象/匿名对象/匿名内部类,必须使用返回值类型或该类的父类接收;
当一个方法的返回值是一个抽象类时:此时方法的本质是希望返回的是该类的子类对象/子类匿名对象/匿名内部类,必须使用返回值类型或该类的父类接收;
当一个方法的返回值是一个接口时:此时方法的本质是希望返回的是该接口的实现类对象/实现类匿名对象/匿名内部类,必须使用返回值类型或该类的父类接收。
匿名内部类格式:
new 类名() {重写方法或者自定义方法;};
new Animal() {
@Override
public void bark() {
System.out.println("动物的子类叫");
}
@Override
public void show() {
System.out.println("动物的子类show");
}
};