定义一个接口IMonst 中一个attck方法, 实现一个MonstBase实现attck方法 实现一个子类Pig继承MonstBase 并重写attack方法 实现一个子类Dragon继承MonstBase 并重写attack方法 编写测试方法实现attack的调用
时间: 2024-09-23 12:01:22 浏览: 26
Java中使用接口实现多继承和多态的方法
5星 · 资源好评率100%
在Java中,你可以这样定义一个名为`IMonst`的接口,其中包含一个抽象方法`attack()`:
```java
public interface IMonst {
void attack();
}
```
然后创建一个基类`MonstBase`,这个类实现了`IMonst`接口并提供了默认的`attack()`方法:
```java
public abstract class MonstBase implements IMonst {
@Override
public void attack() {
System.out.println("Base monster is attacking.");
}
}
```
接下来,我们可以创建两个子类`Pig`和`Dragon`,它们都继承自`MonstBase`并覆盖`attack()`方法以提供各自的攻击逻辑:
```java
public class Pig extends MonstBase {
@Override
public void attack() {
System.out.println("Pig is squealing and biting.");
}
}
public class Dragon extends MonstBase {
@Override
public void attack() {
System.out.println("Dragon is breathing fire.");
}
}
```
现在我们可以在测试类中编写一个方法来演示如何调用这两个子类的不同攻击行为:
```java
public static void main(String[] args) {
Pig pig = new Pig();
pig.attack(); // 输出: Pig is squealing and biting.
Dragon dragon = new Dragon();
dragon.attack(); // 输出: Dragon is breathing fire.
}
```
在这个例子中,尽管`Pig`和`Dragon`都是`MonstBase`的实例,但由于它们各自重写了`attack()`方法,因此当调用这个方法时,实际执行的是子类中的版本。
阅读全文