这是一个常见的多态描述。它表示在编译时,编译器只考虑左边(即引用变量的类型),而在运行时,实际调用的方法是由右边(即对象的实际类型)决定的。
例如,假设有一个父类Animal和两个子类Dog和Cat,如果有以下代码:
Animal animal = new Dog();
animal.say();
在编译时,编译器只考虑animal的类型为Animal,因此只能调用Animal类中的say()方法。但是,由于实际上animal是一个Dog对象,因此在运行时会调用Dog类中的say()方法。因此,多态的运行时行为取决于对象的实际类型,而不是引用变量的类型。