面试题答案
一键面试实现思路
- 首先定义
Character
抽象类,包含move
抽象方法。 - 定义
MagicSkill
接口,包含castSpell
方法。 Mage
类继承Character
抽象类并实现MagicSkill
接口。- 由于
Character
抽象类和MagicSkill
接口不会出现方法签名冲突(题目中未提及相同签名方法),所以直接分别实现move
方法和castSpell
方法即可。
示例代码(以Java为例)
// Character抽象类
abstract class Character {
// move抽象方法
public abstract void move();
}
// MagicSkill接口
interface MagicSkill {
void castSpell();
}
// Mage类,继承Character并实现MagicSkill
class Mage extends Character implements MagicSkill {
@Override
public void move() {
System.out.println("Mage is moving.");
}
@Override
public void castSpell() {
System.out.println("Mage is casting a spell.");
}
}
测试代码
public class Main {
public static void main(String[] args) {
Mage mage = new Mage();
mage.move();
mage.castSpell();
}
}
在上述代码中,Mage
类继承自Character
抽象类并实现了MagicSkill
接口,分别实现了两个接口/抽象类中定义的方法。如果在实际场景中有方法签名冲突(比如两个地方定义了同名同参数方法但返回值不同,Java中不会出现这种情况,在C++多重继承等场景可能出现),通常可以通过明确限定调用的是哪个接口/父类的方法,或通过中间类等方式来解决。但在本题给定条件下,按照上述直接实现的方式即可。