接口由多个类实现时用哪一个类的方法
时间: 2023-08-17 17:05:15 浏览: 43
当一个接口被多个类实现时,使用哪个类的方法取决于具体的对象类型。在 Java 中,对象类型是在运行时确定的,而不是在编译时确定的。因此,当我们调用一个接口方法时,实际调用的是当前对象类型的方法。
例如,假设我们有一个接口 `Animal`,它定义了一个方法 `move()`:
```java
public interface Animal {
void move();
}
```
现在,我们有两个类 `Dog` 和 `Cat`,它们都实现了 `Animal` 接口,并且分别实现了 `move()` 方法:
```java
public class Dog implements Animal {
@Override
public void move() {
System.out.println("Dog is running...");
}
}
public class Cat implements Animal {
@Override
public void move() {
System.out.println("Cat is walking...");
}
}
```
现在,我们可以创建两个对象 `dog` 和 `cat`,并将它们都视为 `Animal` 类型的对象:
```java
Animal dog = new Dog();
Animal cat = new Cat();
```
当我们调用 `move()` 方法时,实际调用的是当前对象类型的方法。例如,调用 `dog.move()` 将调用 `Dog` 类的 `move()` 方法,而调用 `cat.move()` 将调用 `Cat` 类的 `move()` 方法。
```java
dog.move(); // 输出 "Dog is running..."
cat.move(); // 输出 "Cat is walking..."
```
因此,当一个接口被多个类实现时,使用哪个类的方法取决于当前对象的类型。这也是 Java 中多态的一个体现。