在java中定义了一个抽象类Phone,然后又定义了两个类个类:newPhone和oldPhone来继承Phone,要求在测试中定义一个方法,要求该方法既能接收老手机对象,也能接收新手机对象 在该方法内部调用打电话,发短信以及新手机特有的玩游戏方法
时间: 2024-09-13 19:05:39 浏览: 37
在Java中,可以使用抽象类和继承的概念来实现这样的需求。首先,定义一个抽象类`Phone`,在这个抽象类中定义所有手机共有的方法,比如打电话和发短信。然后,为`newPhone`和`oldPhone`分别定义特有的方法。最后,创建一个方法,它接受`Phone`类作为参数,以便可以传入任何继承自`Phone`的对象。
下面是一个简单的实现示例:
```java
// 定义抽象类Phone
abstract class Phone {
// 抽象方法打电话
public abstract void makeCall();
// 抽象方法发短信
public abstract void sendMessage();
}
// 定义oldPhone类继承自Phone
class OldPhone extends Phone {
@Override
public void makeCall() {
System.out.println("老手机打电话");
}
@Override
public void sendMessage() {
System.out.println("老手机发短信");
}
}
// 定义newPhone类继承自Phone,并添加新方法玩游戏
class NewPhone extends Phone {
@Override
public void makeCall() {
System.out.println("新手机打电话");
}
@Override
public void sendMessage() {
System.out.println("新手机发短信");
}
// 新手机特有的方法玩游戏
public void playGame() {
System.out.println("新手机玩游戏");
}
}
// 定义一个可以接收Phone类以及其子类实例的方法
public void usePhone(Phone phone) {
// 调用共有的打电话和发短信方法
phone.makeCall();
phone.sendMessage();
// 判断是否是newPhone类的实例,如果是,则调用玩游戏的方法
if(phone instanceof NewPhone) {
((NewPhone)phone).playGame();
}
}
```
在这个例子中,`usePhone`方法可以接收任何`Phone`的实例,无论是`OldPhone`还是`NewPhone`。如果传入的是`NewPhone`的实例,还可以额外调用`playGame`方法。