一,多态
1,方法重载(Overloading)
方法重载(Overloading):在一个类中定义多个同名的方法,但是它们的参数列表不同。这些方法可以有不同的返回类型,也可以有不同的访问修饰符。当调用一个方法时,根据传递的参数类型和数量,JVM 会自动选择合适的方法进行调用。
2,方法覆盖(Overriding)
方法覆盖(Overriding):子类可以重写父类中的方法,即在子类中定义与父类中同名、同参数列表的方法。当子类对象调用该方法时,将执行子类中的方法。
上面两个例子相关代码如下:
public class Animal {
public void eat() {
System.out.println("动物正在进食");
}
public void eat(String food) {
System.out.println("动物正在吃的是 " + food);
}
}
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗在啃骨头");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.eat(); // 动物正在进食
Dog dog = new Dog();
dog.eat(); // 狗在啃骨头
}
}
3,实现接口
实现接口(Implementing Interfaces):一个类可以实现多个接口,每个接口中定义了一些抽象方法。当一个类实现了一个或多个接口时,它必须实现接口中定义的所有抽象方法。实现接口的类可以使用接口中定义的方法,并且还可以添加自己的方法。当一个对象实现了一个接口时,它可以使用接口中定义的方法,并且还可以使用自己添加的方法。
interface Animal {
void makeSound();
}
class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("狗子:汪汪");
}
}
class Cat implements Animal {
@Override
public void makeSound() {
System.out.println("猫咪:喵呜");
}
}