public void makeSound() {
System.out.println("Some generic sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Woof! Woof!");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow!");
}
}
public class PolymorphismExample {
public static void main(String[] args) {
// 使用多态性
Animal myDog = new Dog();
Animal myCat = new Cat();
// 调用 makeSound 方法,实际上会调用具体对象的重写后的方法
myDog.makeSound(); // 输出:Woof! Woof!
myCat.makeSound(); // 输出:Meow!
}
}
Animal
是基类,其中有一个makeSound
方法。Dog
和Cat
是继承自Animal
的派生类,它们分别重写了makeSound
方法。- 在
main
方法中,通过多态性,我们创建了一个Animal
类型的引用myDog
和myCat
,但它们分别指向了Dog
和Cat
类型的对象。 - 当调用
makeSound
方法时,实际上调用的是具体对象的重写后的方法,而不是基类的方法。
这种灵活性使得我们可以通过统一的接口(基类)处理不同类的对象,而无需关心具体对象的类型。这是多态性在面向对象编程中的一个关键优势。
总结;基类是子类的父类,原本是子类名 对象名=new 子类名,有许多要设置可以用基类代替不同的子类名,如“基类名 对象名=new 子类名”这里代表不同的子类名,关系是从基类继承的
在面向对象编程中,基类(也称为父类或超类)是一个通用的类,而子类(也称为派生类)是基类的特定类型。通过使用基类的引用来引用子类的对象,可以实现多态性,从而提高代码的灵活性和可维护性。