关于Java中的多态实现,有两个关键概念:重写(override)和重载(overload)。其中,重写是指子类重写(override)超类的方法,使得子类对象以超类的方式来进行操作。而重载(overload)则是指在同一个类中,在方法名相同而参数不同的情况下,编译器会根据不同的参数类型和个数来自动调用不同的方法。
// 重写实现 public class Animal { public void run() { System.out.println("Animal run."); } } public class Dog extends Animal { public void run() { System.out.println("Dog run."); } } // 调用重写的结果 Animal animal = new Dog(); animal.run(); // 输出 "Dog run."
在以上的代码中,Dog类继承了Animal类,并重写了其中的run方法。然后,我们创建了一个Dog类的实例,并将其赋值给一个Animal类型的引用变量。这种情况下,当我们调用animal.run()方法时,由于animal的实际类型是Dog,所以调用的实际是Dog类中的run方法,从而输出了 "Dog run."。这就是多态的表现。
// 重载实现 public class Calculation { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } // 调用重载的结果 Calculation calc = new Calculation(); System.out.println(calc.add(10, 20)); // 输出 30 System.out.println(calc.add(10.5, 20.5)); // 输出 31.0
在以上的代码中,我们定义了一个Calculation类,并在其中实现了两个add方法,一个接收两个int类型的参数,另一个则接收两个double类型的参数。由于这两个方法的方法名相同但参数类型和个数不同,所以它们是重载关系。在调用时,编译器会根据传入的参数类型和个数自动调用对应的方法,从而实现了多态。