Loading

java多态(涉及强制类型转换)

多态的前提:

  1. 有继承/实现关系
  2. 有方法重写
  3. 父类的引用指向子类的对象

多态示例:

class Animal {
    public String name = "animal";
    public void eat() {
        System.out.println("动物吃草");
    }
}

class Chicken extends Animal {
    public String name = "chicken";

    @Override
    public void eat() {
        System.out.println("鸡吃米");
    }

    public void egg(){
        System.out.println("鸡生蛋");
    }

场景一:用于调用子类特有的方法。

  • 成员方法:使用动态绑定,调用的是实际对象的实现。

向下转型:将对象引用的类型从父类型转成子类型,用于访问子类特有、而父类没有的方法。

Animal animal = new Chicken();
Chicken chicken = (Chicken) animal;
chicken.egg();

场景二:调用父类的成员变量。

  • 成员变量:使用静态绑定,访问的是引用类型的成员变量。
Animal a = new Cat();   
System.out.println(chicken.name);	//成员对象看左边(Animal),成员方法看右边(Cat)

小结

通过多态,Java 允许你在运行时根据对象的实际类型来决定调用哪个方法,使用哪个成员变量,这使得代码更加灵活和可扩展。同时,静态绑定和动态绑定的机制确保了成员变量和方法的正确访问和调用。

posted @ 2023-01-08 17:08  _rainyday  阅读(379)  评论(0)    收藏  举报