一、概念
多态性是指一个对象可以被看做是其父类类型的实例。一个父类的引用可以指向其子类的对象。它提供了代码的灵活性和可扩展性。
二、多态的实现方式
1、继承:子类继承父类的属性和方法,可以通过子类对象访问父类中的属性和方法。
2、方法重写:子类可以重写父类的方法,即在子类中定义一个与父类具有相同名称。参数列表和返回类型的方法。当子类调用重写的方法时,会调用到子类的方法而不是父类中的方法。
三、多态的特点
1、动态绑定(运行时多态): 指在运行时确定方法的调用版本。当子类重写了父类的方法时,通过父类引用调用改方法时会根据对象的实际类型调用相应的子类的方法。如果调用的方法在编译时无法确定,需要在运行根据对象的实际类型来确定,就会进行动态绑定。
2、静态绑定(编译时多态): 指在编译时确定方法的调用版本。私有方法、静态方法、final方法或者构造方法就能使用静态绑定。如果调用的方法在编译时是确定的,就能进行静态绑定。
// 父类
class Animal {
public void sound() {
System.out.println("动物发出声音");
}
}
// 子类1
class Dog extends Animal {
@Override
public void sound() {
System.out.println("狗在汪汪叫");
}
}
// 子类2
class Cat extends Animal {
@Override
public void sound() {
System.out.println("猫在喵喵叫");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Dog(); // 创建一个Dog对象,用Animal类型的引用来引用它
Animal animal2 = new Cat(); // 创建一个Cat对象,用Animal类型的引用来引用它
animal1.sound(); // 调用Dog类重写的sound方法
animal2.sound(); // 调用Cat类重写的sound方法
}
}