多态基础
1. 多态,事物的多种形态
1) 同一个行为具有多种不同的表现形式或形态的能力
2)一个引用变量会指向哪个类的实例对象,该引用变量发出来的方法调用是哪个类中实现的方法,必须在程序运行期间才能决定。
2. 实现多态的三个必要条件
1)父子类
2)重写(子类重写父类方法)
3)向上转型(重点)
父类 变量 = new 子类
酒 五粮液 = new 五粮液();
五粮液.喝酒();
向上转型的好处:子类是父类的扩展,它可以提供比父类更强大的功能,如果我们定义了一个指向子类的父类的引用,那么它除了能引用父类的共性外,还可以使用子类的强大功能。
3. 多态实例
/**
*多态的意义:编译时并不确定该程序指什么,只有运行时才知道
*
*/
public class 多态案列 {
public static void main(String[] args) {
//向上转型
Animal animal1 = new Dog();
animal1.eat();
//多态局限性,不能调用子类的扩展方法
//animal1.lookDoor();
Animal animal2 = new Cat();
animal2.eat();
}
}
//1:父子关系
//2:方法重写
//3:向上转型(父类有一个引用去指向子类)
abstract class Animal {
public abstract void eat() ;
}
class Dog extends Animal{
//方法重写标志
@Override
public void eat