Java是一种具有强引用特性的面向对象编程语言。当我们在Java中定义一个变量时,实际上创建了一个“引用”,而不是一个对象。引用指向内存中实际存在的对象,可以理解为引用是对象的一种标识。
Java的多态性是指同一种类型的对象,使用不同的方法会导致不同的结果。Java支持两种类型的多态性:编译时多态性和运行时多态性。编译时多态性通常称为重载,即在同一类中使用同一方法名,实现不同的功能;运行时多态性通常称为重写,即子类继承父类的方法,但重新定义该方法,以实现不同的功能。
public class Animal { public void eat() { System.out.println("Animal eats."); } } public class Cat extends Animal { public void eat() { System.out.println("Cat eats fish."); } } public class Dog extends Animal { public void eat() { System.out.println("Dog eats meat."); } } public class Test { public static void main(String[] args) { Animal animal1 = new Animal(); Animal animal2 = new Cat(); Animal animal3 = new Dog(); animal1.eat(); animal2.eat(); animal3.eat(); } }
在上面的示例中,Animal类是父类,Cat和Dog是子类。我们分别实例化了三个不同的对象:animal1是Animal类的对象,animal2是Cat类的对象,animal3是Dog类的对象。我们调用它们的eat()方法。因为animal1是Animal类的对象,所以它将调用Animal类中的eat()方法并输出“Animal eats.”。animal2是Cat类的对象,所以它将调用Cat类中重写的eat()方法并输出“Cat eats fish.”。animal3是Dog类的对象,所以它将调用Dog类中重写的eat()方法并输出“Dog eats meat.”。这就是Java中的多态性,同样的方法名,但是执行的结果不同。