我看到的多态方法覆盖的唯一例子涉及不带参数的方法,或者至少具有相同的参数列表.考虑常见的Animal/Dog/Cat示例:
public abstract class Animal
{
public abstract void makeSound();
}
public class Dog extends Animal
{
public void makeSound()
{
System.out.println("woof");
}
}
public class Cat extends Animal
{
public void makeSound()
{
System.out.println("meow");
}
}
public class ListenToAnimals
{
public static void main(String[] args)
{
AnimalFactory factory = new AnimalFactory();
Animal a = factory.getRandomAnimal(); // generate a dog or cat at random
a.makeSound();
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,一切都很好.现在让我们添加另一个在抽象类中部分实现的方法,同时在子类中获得更具体的行为:
public abstract class Animal
{
public abstract void makeSound();
public void speak(String …Run Code Online (Sandbox Code Playgroud)