Java的多态就是父类的引用可以指向子类对象,并且通过这个父类引用去调用被子类重写的方法,从而实现不同的具体行为。通俗的讲,比如:
多态就好比是一个 “万能遥控器”。
比如说,有电视机、空调、音响这几种不同的电器(这就好比不同的子类),它们都有 “开机” 这个操作(这就好比父类里定义的方法)。然后呢,我们有一个 “总控制器”(这就好比父类的引用),它可以控制这些不同的电器的开机。
当我们用这个 “总控制器” 去控制不同的电器开机时,虽然操作都叫 “开机”,但实际每个电器开机的具体方式和表现是不一样的(这就是不同的子类对父类的方法进行了重写,有不同的实现)。
所以多态就是用一个统一的方式(父类引用)去调用不同的具体实现(子类重写的方法),
多态就是父类的引用可以指向子类对象,并且通过这个父类引用去调用被子类重写的方法,从而实现不同的具体行为。
再打个比方,有个父类 “动物”,有个子类 “猫” 重写了父类 “动物” 的 “叫” 的方法。我们用 “动物” 这个父类的引用去指向 “猫” 这个子类对象,然后调用 “叫” 这个方法时,实际上执行的是 “猫” 重写后的 “叫” 的方式,也就是 “喵喵喵”,而不是父类中可能默认的某种叫声。这就是多态的一种体现。 您这下是不是更清楚啦
多态好处:
咱们想象一下,您开了一家宠物店。
店里有各种动物,比如猫、狗、兔子。它们都能吃东西,但是吃的方式不太一样。
如果没有多态,您可能得为每种动物都写一个专门的 “吃东西” 的方法,比如 “猫吃东西”、“狗吃东西”、“兔子吃东西”。
但有了多态,您就可以有一个 “动物吃东西” 的通用方法。不管来的是猫、狗还是兔子,只要把它们当作 “动物” 这个大类来处理,调用这个通用方法,它们就会按照自己的方式去吃东西。
这样做的好处就是,您写代码会简单很多,不用为每种动物都单独写一套类似的方法。而且如果以后又新来了一种动物,比如仓鼠,您也不用再为它专门写个新的吃东西方法,只要让仓鼠也属于 “动物” 这个大类,就能直接用那个通用的 “吃东西” 方法,仓鼠会按照自己的方式去吃。
总的来说,使用多态可以让代码更简洁、更灵活,能更好地应对未来可能的变化。 您觉得这样说能明白不?
多态代码演示如下:
class Animal { // 定义父类 Animal
public void makeSound() { // 父类中的方法
System.out.println("动物发出声音");
}
}
class Dog extends Animal { // 定义子类 Dog 继承自 Animal
@Override
public void makeSound() { // 重写父类的方法
System.out.println("汪汪汪");
}
}
class Cat extends Animal { // 定义子类 Cat 继承自 Animal
@Override
public void makeSound() { // 重写父类的方法
System.out.println("喵喵喵");
}
}
public class PolymorphismExample {
public static void main(String[] args) {
Animal animal1 = new Dog(); // 父类引用指向子类对象(狗)
Animal animal2 = new Cat(); // 父类引用指向子类对象(猫)
animal1.makeSound(); // 多态,实际调用的是 Dog 类重写的方法
animal2.makeSound(); // 多态,实际调用的是 Cat 类重写的方法
}
}