多态必须在有继承/实现关系下:有父类指向子类对象,有方法重写(重写之后,同一个行为(run方法)不同的特征)

多态:执行同一个行为(run方法),会表现出不同的行为特征(运行不同的子类方法【子类继承了抽象类,重写了方法】)
image.png

  1. package com.itheima.d1_polymorphic;
  2. /**
  3. * 目标:认识多态,理解多态的形式和概念
  4. */
  5. public class Test {
  6. public static void main(String[] args) {
  7. // 1. 多态的形式:父类类型 对象名称 = new 子类构造器
  8. Animal a = new Dog();
  9. /**
  10. * 多态方法调用:编译看左边,运行看右边 多态侧重行为(方法) 实现在不同对象下,表现不同的行为
  11. * 多态变量的调用: 编译看左边,运行看左边
  12. */
  13. a.run();// 编译看左边,运行看右边(运行是运行右边的子类方法)
  14. System.out.println(a.name); // 编译看左边,运行看左边(运行左边父类的成员变量)
  15. Animal a2 = new Tortoise();
  16. a2.run();// 编译看左边,运行看右边(运行是运行右边的子类方法)
  17. System.out.println(a2.name);// 编译看左边,运行看左边(运行左边父类的成员变量)
  18. }
  19. }
// 这是一个抽象父类
package com.itheima.d1_polymorphic;

public abstract class Animal {
    public String name = "父类动物";
    public abstract void run();// 就定义方法,让子类继承
}

// 这是一个子类
package com.itheima.d1_polymorphic;

public class Dog extends Animal{
    public String name = "子类狗";
    @Override
    public void run() {
        System.out.println("🐕跑的贼快~~");
    }
}
// 这是一个子类
package com.itheima.d1_polymorphic;

public class Tortoise extends Animal{
    public String name = "子类龟";
    @Override
    public void run() {
        System.out.println("🐢根本跑不了");
    }
}