多态:就是对同一个对象在不同时刻表现的不同形态(比如例子中的猫可以是一只猫也可以是一个动物)
- class Animal {
- public void eat(){
- System.out.println("动物吃饭");
- }
- }
-
- class Cat extends Animal {
- @Override
- public void eat() {
- System.out.println("猫吃鱼");
- }
- }
-
- public class Test1 {
-
- public static void main(String[] args) {
- // 当前事物, 是一只猫
- Cat cat = new Cat();
- // 当前事物, 是一只动物
- Animal animal = new Cat();
- animal.eat();
-
- }
- }
总结就是:编译看左边,运行看右边
例子:
- class Fu {
- int num = 10;
- public void method(){
- System.out.println("父类方法执行");
- }
- }
-
- class Zi extends Fu {
- int num = 20;
- public void method(){
- System.out.println("子类方法执行");
- }
- }
- public class Demo01 {
- public static void main(String[] args) {
- Fu f = new Zi();
- System.out.println(f.num);
- f.method();
- }
运行结果:
成员变量的编译和运行都是父类,例子中的父类成员变量为int = 10,成员方法是编译看父类,运行看子类,所以子类的方法运行(前提是子类有父类的方法重写)