面试题:Java多态下不同数据类型参数重载方法的调用规则
假设有如下Java代码:
```java
class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks");
}
public void makeSound(String name) {
System.out.println(name + " the dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Animal();
Dog dog = new Dog();
// 请分别写出以下调用的输出结果
animal1.makeSound();
animal2.makeSound();
dog.makeSound();
dog.makeSound("Buddy");
// 并解释多态下不同数据类型参数重载方法的调用规则