抽象类的使用 用类封装手机的基本属性和功能,要求手机即可以使用移动公司的ISM卡也可以使用联通公司SIM卡(可以使用任何公司提供的SIM卡)
时间: 2024-11-10 17:24:51 浏览: 16
php抽象类使用要点与注意事项分析
为了实现这个需求,你可以使用抽象类来封装手机的基本属性和通用的功能,并让其子类代表特定品牌的SIM卡。这里是一个简单的示例:
首先,定义一个抽象的`Phone`类,包含所有手机共有的属性和方法:
```java
public abstract class Phone {
private String brand;
private String model;
private double screenSize;
public Phone(String brand, String model, double screenSize) {
this.brand = brand;
this.model = model;
this.screenSize = screenSize;
}
public String getBrand() {
return brand;
}
public String getModel() {
return model;
}
public double getScreenSize() {
return screenSize;
}
// 手机的基本功能,如打电话、发送短信等
public abstract void makeCall();
public abstract void sendTextMessage();
// 抽象方法,用于插入和管理SIM卡
public abstract SimCard insertSimCard(SimCard sim);
public abstract void removeSimCard();
}
```
接着,创建一个`SimCard`接口,表示任何类型的SIM卡:
```java
public interface SimCard {
void makeCall();
void sendTextMessage();
// ...其他SIM卡特有的方法
}
```
然后,创建一个实现了`SimCard`接口的具体类,如`ChinaMobileSim`和`ChinaUnicomSim`:
```java
public class ChinaMobileSim implements SimCard {
// 实现SimCard接口的方法,例如与中国移动相关的操作
}
public class ChinaUnicomSim implements SimCard {
// 实现SimCard接口的方法,例如与中国联通相关的操作
}
```
当你需要使用手机时,可以这样创建实例并插入对应公司的SIM卡:
```java
public static void main(String[] args) {
Phone phone = new ChinaMobilePhone("Samsung", "Galaxy S21", 6.2);
SimCard mobileSim = new ChinaMobileSim();
phone.insertSimCard(mobileSim);
// 执行手机功能
phone.makeCall();
phone.sendTextMessage();
// 换成联通SIM卡
SimCard unicomSim = new ChinaUnicomSim();
phone.removeSimCard();
phone.insertSimCard(unicomSim);
// 再次执行手机功能,这次是联通SIM卡的行为
phone.makeCall();
phone.sendTextMessage();
}
```
通过这种方式,你可以保持`Phone`类的抽象性,使得它能够处理任何支持`SimCard`接口的SIM卡,而不需要知道底层的具体实现。
阅读全文