举例说明多态的用法
时间: 2023-07-19 16:09:29 浏览: 199
多态是面向对象编程中的一个重要概念,它允许不同的对象对同一消息做出不同的响应。在Java中,多态有多种实现方式,其中最常见的是方法重载和方法覆盖。
方法重载是指在同一个类中定义多个同名的方法,但是它们的参数列表不同。这样做的好处是可以根据不同的参数类型和个数来调用不同的方法。下面是一个方法重载的例子:
```java
public class Demo {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
Demo demo = new Demo();
int result1 = demo.add(1, 2);
double result2 = demo.add(1.0, 2.0);
System.out.println(result1); // 输出3
System.out.println(result2); // 输出3.0
}
}
```
方法覆盖是指子类覆盖了父类中的同名方法,但是方法的参数列表和返回值类型必须相同。这样做的好处是可以根据对象的实际类型来调用相应的方法。下面是一个方法覆盖的例子:
```java
public class Animal {
public void sound() {
System.out.println("Animal makes sound");
}
}
public class Dog extends Animal {
public void sound() {
System.out.println("Dog barks");
}
}
public class Cat extends Animal {
public void sound() {
System.out.println("Cat meows");
}
}
public class Demo {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.sound(); // 输出Dog barks
animal2.sound(); // 输出Cat meows
}
}
```
在这个例子中,Animal类有一个sound()方法,它被子类Dog和Cat覆盖了。在main()方法中,分别创建了一个Dog对象和一个Cat对象,并将它们赋值给Animal类型的变量。由于animal1的实际类型是Dog,调用它的sound()方法时会执行Dog类中的sound()方法;同理,animal2的实际类型是Cat,调用它的sound()方法时会执行Cat类中的sound()方法。
这就是多态的用法,它可以让我们编写出更加灵活和可扩展的代码。
阅读全文