(1) 定义抽象类Phone 属性:品牌brand,价格price JavaBean:有参构造,无参构造,及相应的getter( )、setter( )方法 抽象行为getContent( ):用于手机功能实现(旧手机用打电话;新手机用于视频电话) (2) 定义接口IPlay 行为:玩游戏playGame( ); (3) 定义旧手机类OldPhone继承手机类 属性:折扣discount;声明OldPhone类构造方法,并重写Phone类getConten( )方法 (4) 定义新手机类NewPhone继承手机类并实现IPlay接口 声明OldPhone类构造方法,并重写Phone类getContent( ) 重写玩游戏playGame( )方法 (5) 定义测试类 在测试类中定义一个用手机的方法,要求方法既能接收老手机对象,也能接收新手机对象 在该方法内部调用打电话,发短信以及新手机特有的玩游戏方法 JAVA
时间: 2024-03-15 16:47:52 浏览: 27
代码实现如下:
Phone.java
```java
public abstract class Phone {
private String brand;
private double price;
public Phone() {}
public Phone(String brand, double price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public abstract void getContent();
}
```
IPlay.java
```java
public interface IPlay {
void playGame();
}
```
OldPhone.java
```java
public class OldPhone extends Phone {
private double discount;
public OldPhone() {}
public OldPhone(String brand, double price, double discount) {
super(brand, price);
this.discount = discount;
}
public double getDiscount() {
return discount;
}
public void setDiscount(double discount) {
this.discount = discount;
}
@Override
public void getContent() {
System.out.println("用手机打电话");
}
}
```
NewPhone.java
```java
public class NewPhone extends Phone implements IPlay {
public NewPhone() {}
public NewPhone(String brand, double price) {
super(brand, price);
}
@Override
public void getContent() {
System.out.println("用手机视频通话");
}
@Override
public void playGame() {
System.out.println("用手机玩游戏");
}
}
```
Test.java
```java
public class Test {
public static void usePhone(Phone phone) {
phone.getContent();
if (phone instanceof OldPhone) {
System.out.println("用手机发短信");
}
if (phone instanceof NewPhone) {
((NewPhone) phone).playGame();
}
}
public static void main(String[] args) {
OldPhone oldPhone = new OldPhone("Nokia", 99.9, 0.8);
NewPhone newPhone = new NewPhone("iPhone", 999.9);
usePhone(oldPhone);
usePhone(newPhone);
}
}
```
在测试类中定义一个名为 `usePhone` 的静态方法,它的参数是一个 `Phone` 对象。在该方法中,调用 `Phone` 对象的 `getContent` 方法,如果该对象是 `OldPhone` 类型,则输出 "用手机发短信",如果该对象是 `NewPhone` 类型,则调用 `playGame` 方法。
在 `main` 方法中创建一个 `OldPhone` 对象和一个 `NewPhone` 对象,并分别调用 `usePhone` 方法。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)