多态是面向对象编程中的一个重要概念,指的是同一个方法调用会根据对象的不同而表现出不同的行为。在Java中,多态实现的基础是方法的重写(覆写)和方法的重载。
下面是一个简单的示例来说明多态的概念:
class Animal {
public void makeSound() {
System.out.println("动物发出叫声");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("汪汪汪");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("喵喵喵");
}
}
public class PolymorphismExample {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.makeSound(); // 输出"汪汪汪"
myCat.makeSound(); // 输出"喵喵喵"
}
}
在上面的示例中,Animal类是一个基类,里面定义了一个makeSound方法。Dog和Cat类继承自Animal类,并且重写了makeSound方法。在主程序中,创建了一个Dog对象和一个Cat对象,但是它们都被声明为Animal类型。当调用makeSound方法时,实际上会根据对象的实际类型而执行不同的方法体,这就是多态的表现。
通过多态,可以让代码更加灵活和可扩展,能够更好地应对需求变化。
1.什么是多态?
同类型的对象,表现出的不同形态。
2.多态的表现形式
父类类型 对象名称=子类对象;
3.多态的前提
有继承关系
有父类引用指向子类对象
有方法重写
4.多态的好处?
使用父类型作为参数,可以接收所有子类对象,
体现多态的扩展性与便利。
在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");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
makeAnimalSound(dog);
makeAnimalSound(cat);
}
public static void makeAnimalSound(Animal animal) {
animal.makeSound();
}
}
在这个示例中,Animal类是父类,而Dog和Cat类是Animal的子类。在main方法中,我们创建了一个Dog对象和一个Cat对象,并将它们分别传递给makeAnimalSound方法,该方法以Animal类型作为参数。由于多态的特性,makeAnimalSound方法可以接收任何Animal的子类对象,并调用相应子类的makeSound方法。