简述JAVA多态的三种形式
时间: 2024-02-26 17:49:06 浏览: 86
JAVA多态的三种形式分别是重写、重载和接口实现。
1. 重写(Override):子类继承父类后,可以对父类中的方法进行重写,即在子类中重新定义一个与父类方法名、返回值类型和参数列表都相同的方法,但是方法体不同。当调用该方法时,会根据对象的实际类型来确定调用哪个方法。
2. 重载(Overload):在同一个类中,可以定义多个方法名相同但参数列表不同的方法,这就是方法的重载。当调用该方法时,会根据传入的参数类型和数量来确定调用哪个方法。
3. 接口实现(Interface):接口是一种抽象类型,它只定义了方法的声明而没有方法的实现。一个类可以实现一个或多个接口,实现接口的类必须实现接口中定义的所有方法。当调用实现接口的类的方法时,会根据对象的实际类型来确定调用哪个方法。
下面是三种形式的示例代码:
1. 重写
```java
class Animal {
public void move() {
System.out.println("动物可以移动");
}
}
class Dog extends Animal {
public void move() {
System.out.println("狗可以跑和走");
}
}
public class TestDog {
public static void main(String args[]) {
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
}
}
```
输出结果为:
```
动物可以移动
狗可以跑和走
```
2. 重载
```java
public class OverloadTest {
public void test() {
System.out.println("无参数");
}
public void test(int a) {
System.out.println("a: " + a);
}
public void test(int a, int b) {
System.out.println("a: " + a + ", b: " + b);
}
public static void main(String[] args) {
OverloadTest test = new OverloadTest();
test.test();
test.test(10);
test.test(10, 20);
}
}
```
输出结果为:
```
无参数
a: 10
a: 10, b: 20
```
3. 接口实现
```java
interface Animal {
public void eat();
}
class Dog implements Animal {
public void eat() {
System.out.println("狗吃肉");
}
}
class Cat implements Animal {
public void eat() {
System.out.println("猫吃鱼");
}
}
public class TestAnimal {
public static void main(String args[]) {
Animal a = new Dog(); // Dog 对象
Animal b = new Cat(); // Cat 对象
a.eat();// 执行 Dog 类的方法
b.eat();//执行 Cat 类的方法
}
}
```
输出结果为:
```
狗吃肉
猫吃鱼
```
阅读全文