1、什么是多态
多态指同一个实体同时具有多种形式。它是面向对象程序设计的一个重要特征,指对象的多种形态。
多态的作用:多态提高了程序的可扩展性和可维护性。
2、满足多态的条件
1、有继承关系
2、有方法重写
3、父类的引用指向子类对象
Animal a = new Dog();
左边是父类的引用,右边是子类的对象;
3、多态的特点
本质:父类的引用指向子类的对象,即 Animal a = new Dog();
- 可以调用父类的所有成员(除私有方法和私有属性),包括子类没有的方法
- 不能调用子类特有的成员
- 对于方法调用,编译看左边,运行看右边
- 对于变量调用,编译看左边,运行看左边
总结:可以调用父类除私有外所有属性和方法,如果子类重写了相同的方法,则调用子类的方法。
父类的所有属性和方法(除私有)+ 子类的重写方法
下面看代码示例:
定义一个父类 Animal,里面定义了一些私有属性、私有方法和特有方法
定义一个子类 Dog,里面定义了一些子类的属性和特有方法,以及重写了父类的 eat 方法
下面是主函数:
运行结果:
Animal a = new Dog(); Dog d = (Dog) a;
一个已经向上转型的子类对象,将父类引用转为子类引用
1、只能强制转换父类的引用,不能强制转换父类的对象
2、要求父类的引用必须指向的是当前目标类型的对象
3、当向下转型后,可以调用子类类型中所有的成员
4、初始化顺序
静态变量和静态代码块在类加载的时候执行,实例化对象先声明并实例化变量再执行构造函数