java是一门面向对象的编程语言,它提供了两种常用的实现多态的方式:重载和重写。虽然这两种方式都可以实现多态,但是它们之间存在着一些不同之处。
重载是指一个类中定义了多个同名的方法,它们具有不同的参数列表。在调用这个方法时,编译器会根据传递给该方法的参数的类型和数量来决定该调用哪个方法。这种方法称为重载方法。例如:
public void show(int i){ System.out.println("show(int i)"); } public void show(String str){ System.out.println("show(String str)"); } public void show(int i, String str){ System.out.println("show(int i, String str)"); }
重写是指在派生类中定义一个与基类中同名的方法,但是其实现方式不同。子类中的方法与基类中的方法具有相同的返回类型和参数列表。当程序调用这个方法时,执行的是子类中的方法,而不是父类中的方法。例如:
class Animal{ public void move(){ System.out.println("Animal move"); } } class Cat extends Animal{ public void move(){ System.out.println("Cat move"); } }
重载方法基于参数的类型和数量来判断哪个方法被调用,而重写方法基于具体的对象类型来判断哪个方法被调用。此外,重载方法是一种静态绑定,而重写方法是一种动态绑定。在编译器编译的时候,会根据传递的参数来决定调用哪个方法;而在运行时,会动态地决定调用哪个方法。
总而言之,重载和重写都是实现多态的方式,但是它们的实现方法和调用方式不同。应根据具体的需求选择使用哪种方式来实现多态。