理解Java中的多态

概念:在Java和其他面向对象编程语言中,多态允许对象被视为其父类或接口类型的对象,而不仅仅是它们自己的类型。

 光凭概念看多态是很难理解,下面我来看具体的案例:

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("Dog barks");
    }
}

class Cat extends Animal {
    void sound() {
        System.out.println("Cat meows");
    }
}

public class TestPolymorphism {
    public static void main(String[] args) {
        Animal a;
        a = new Dog();
        a.sound();

        a = new Cat();
        a.sound();
    }
}

从上述代码中我们可以看到 :a 是一个类型为 Animal 的引用,但它可以引用 DogCat 类型的对象。当我们调用 a.sound() 时,JVM决定调用哪个方法是基于 a 实际引用的对象的类型,而不是变量 a 的声明类型。因此,输出将是:

Dog barks
Cat meows

要想满足多态的条件必须满足两个条件:

  • 引用类型之间必须存在继承关系
  • 引用类型之间存在方法的重写,即方法一模一样。

你可能感兴趣的:(java,java,开发语言)