座机类和移动手机类都继承自一个通信设备类,通信设备类包含通信设备的一些基本属性和方法,比如设备编号、设备状态、拨打电话、接收电话等。座机类和移动手机类分别添加一些特定的属性和方法。 座机类的特定属性包括:座机号码、座机类型(家用、办公室等)、座机费用等。座机类的特定方法包括:计算座机电话费用、查询余额和充话费等。 移动手机类的特定属性包括:手机号码、所属运营商、通话时长、移动手机费用等。移动手机类的特定方法包括:计算移动电话费用、查询余额和充话费等。 测试类主要用来测试座机类和移动手机类的功能,包括拨打电话、接收电话、查询余额、充话费等操作。 java实现
时间: 2023-12-21 22:05:38 浏览: 109
好的,以下是一个简单的Java实现,实现了上述要求:
```
// 通信设备类
class CommunicationDevice {
private String deviceNumber; // 设备编号
private boolean deviceStatus; // 设备状态,true为开启,false为关闭
// 构造方法
public CommunicationDevice(String deviceNumber) {
this.deviceNumber = deviceNumber;
this.deviceStatus = false;
}
// 开启设备
public void turnOn() {
this.deviceStatus = true;
System.out.println("设备已开启");
}
// 关闭设备
public void turnOff() {
this.deviceStatus = false;
System.out.println("设备已关闭");
}
// 拨打电话
public void call(String phoneNumber) {
System.out.println("正在拨打电话:" + phoneNumber);
}
// 接收电话
public void answer() {
System.out.println("正在接听电话");
}
}
// 座机类
class Landline extends CommunicationDevice {
private String landlineNumber; // 座机号码
private String landlineType; // 座机类型
private double landlineFee; // 座机费用
private double balance; // 余额
// 构造方法
public Landline(String deviceNumber, String landlineNumber, String landlineType, double landlineFee) {
super(deviceNumber);
this.landlineNumber = landlineNumber;
this.landlineType = landlineType;
this.landlineFee = landlineFee;
this.balance = 0.0;
}
// 计算座机电话费用
public double calculateFee(int duration) {
return duration * this.landlineFee;
}
// 查询余额
public double getBalance() {
return this.balance;
}
// 充话费
public void topUp(double amount) {
this.balance += amount;
System.out.println("充值成功,当前余额:" + this.balance);
}
}
// 移动手机类
class MobilePhone extends CommunicationDevice {
private String phoneNumber; // 手机号码
private String operator; // 运营商
private double callFee; // 通话费用
private double balance; // 余额
private int callDuration; // 通话时长(单位:秒)
// 构造方法
public MobilePhone(String deviceNumber, String phoneNumber, String operator, double callFee) {
super(deviceNumber);
this.phoneNumber = phoneNumber;
this.operator = operator;
this.callFee = callFee;
this.balance = 0.0;
this.callDuration = 0;
}
// 计算移动电话费用
public double calculateFee() {
return this.callDuration * this.callFee;
}
// 查询余额
public double getBalance() {
return this.balance;
}
// 充话费
public void topUp(double amount) {
this.balance += amount;
System.out.println("充值成功,当前余额:" + this.balance);
}
// 设置通话时长
public void setCallDuration(int duration) {
this.callDuration = duration;
}
}
// 测试类
public class Test {
public static void main(String[] args) {
// 创建一个座机实例
Landline landline = new Landline("001", "12345678", "家用", 0.1);
// 开启座机
landline.turnOn();
// 拨打电话
landline.call("98765432");
// 计算座机电话费用
double fee = landline.calculateFee(60);
System.out.println("座机电话费用:" + fee);
// 查询余额
double balance = landline.getBalance();
System.out.println("座机余额:" + balance);
// 充话费
landline.topUp(10.0);
// 创建一个手机实例
MobilePhone mobilePhone = new MobilePhone("002", "13812345678", "中国移动", 0.5);
// 开启手机
mobilePhone.turnOn();
// 拨打电话
mobilePhone.call("13698765432");
// 设置通话时长
mobilePhone.setCallDuration(120);
// 计算移动电话费用
fee = mobilePhone.calculateFee();
System.out.println("移动电话费用:" + fee);
// 查询余额
balance = mobilePhone.getBalance();
System.out.println("手机余额:" + balance);
// 充话费
mobilePhone.topUp(20.0);
}
}
```
上述代码实现了座机类、移动手机类和测试类。在测试类中,我们创建了一个座机实例和一个手机实例,并测试了它们的基本功能,包括开启设备、拨打电话、计算电话费用、查询余额、充话费等操作。
阅读全文