多态是对象采取多种形式的能力。当使用父类引用来引用子类对象时,会在OOP中最常见地使用多态。
任何可以通过多个IS-A测试的Java对象都被视为多态的。在Java中,所有Java对象都是多态的,因为任何对象都将通过IS-A测试以了解其自身类型和Object类。
重要的是要知道访问对象的唯一可能方法是通过引用变量。引用变量只能是一种类型。声明后,引用变量的类型无法更改。
如果未将引用变量声明为final,则可以将其重新分配给其他对象。引用变量的类型将确定它可以在对象上调用的方法。
引用变量可以引用其声明类型的任何对象或其声明类型的任何子类型。引用变量可以声明为类或接口类型。
让我们来看一个例子。
public interface Vegetarian{} public class Animal{} public class Deer extends Animal implements Vegetarian{}
现在,Deer类被认为是多态的,因为它具有多个继承。以下是上述示例的真实情况-
鹿IS-A动物
鹿IS-A素食主义者
鹿IS-A鹿
鹿IS-A对象
当我们将引用变量事实应用于Deer对象引用时,以下声明是合法的-
Deer d = new Deer(); Animal a = d; Vegetarian v = d; Object o = d;
所有引用变量d,a,v,o都引用堆中的同一个Deer对象。