当先锋百科网

首页 1 2 3 4 5 6 7

Java是一种面向对象的编程语言,面向对象的三大特性是封装、继承和多态。其中多态就是在不同的上下文中,同一个方法可以表现出不同的行为。Java实现多态的方式有两种,分别是重载(overload)和重写(override)。

重载是指在同一个类里面可以定义方法名相同但是参数列表不同的方法。使用重载可以在不同的情形下使用同名的方法,这样可以简化代码,使代码更加清晰。下面是一个简单的例子:

public class Calculate {
public int sum(int a, int b) {
return a + b;
}
public double sum(double a, double b) {
return a + b;
}
}

上面的例子中定义了两个方法,一个用于计算两个整数的和,另一个用于计算两个小数的和。因为方法名相同但是参数不同,所以可以在调用时根据参数的数据类型来自动选择调用哪个方法。比如:

Calculate calculator = new Calculate();
int iResult = calculator.sum(1, 2);
double dResult = calculator.sum(1.2, 2.3);

重载的方法是在编译期间确定的,也就是说编译器会根据参数的类型来选择最佳的匹配方法。

重写是指在父类中定义了一个方法,而子类在继承该父类后可以对这个方法进行重写。重写方法的方法名、参数列表和返回值类型都必须与父类中定义的方法相同。下面是一个例子:

public class Animal {
public void speak() {
System.out.println("I am an animal.");
}
}
public class Cat extends Animal {
public void speak() {
System.out.println("I am a cat.");
}
}

上面的例子中,Animal类定义了一个speak方法,而Cat类继承了Animal类后重写了speak方法。在调用Cat类的speak方法时,会自动调用重写后的方法,而不是调用继承自父类的方法。

重写的方法是在运行期间动态确定的,也就是说在调用方法时会根据对象的实际类型来确定最终调用的方法。