设计MobileTelephone类(模拟手机),该类有一个useSIM(SIM card)方法,该方法的参数是SIM类型。显然,参数card可以是抽象类SIM的任何一个子类对象的上转型对象,即参数card可以调用SIM的子类重写的giveNumber()方法显示手机所使用的号码,调用子类重写的giveCorpName()方法显示该号码所属的公司
时间: 2024-03-22 08:37:11 浏览: 58
好的,以下是MobileTelephone类的设计:
```java
public class MobileTelephone {
public void useSIM(SIM card) {
System.out.println("Phone number: " + card.giveNumber());
System.out.println("Corporation name: " + card.giveCorpName());
}
}
```
在这个类中,我们定义了一个useSIM方法,它接受一个SIM类型的参数card。使用card调用giveNumber()方法和giveCorpName()方法,就可以显示使用的号码和所属公司的名称。由于card是一个SIM类型的上转型对象,调用方法时可以调用SIM的子类重写的方法,确保多态性。
相关问题
设计MobileTelephone类(模拟手机),该类有一个useSIM(SIM card)方法,该方法的参数是SIM类型。显然,参数card可以是抽象类SIM的任何一个子类对象的上转型对象,即参数card可以调用SIM的子类重写的giveNumber()方法显示手机所使用的号码,调用子类重写的giveCorpName()方法显示该号码所属的公司。
好的,以下是MobileTelephone类的设计:
```java
public class MobileTelephone {
public void useSIM(SIM card) {
System.out.println("Phone number: " + card.giveNumber());
System.out.println("Corporation name: " + card.giveCorpName());
}
}
```
在这个类中,我们定义了一个useSIM方法,它的参数是一个抽象类SIM的对象card。我们使用card对象来调用其子类重写的giveNumber方法和giveCorpName方法,以显示手机所使用的号码和该号码所属的公司。由于抽象类SIM是所有SIM卡类的父类,因此我们可以传递任何一个SIM卡子类的上转型对象作为useSIM方法的参数。
首先设计一个抽象类SIM,该抽象类有三个抽象方法giveNumber(),setNumber()和giveCorpName(),那么SIM的子类必须实现giveNumber(),setNumber()和giveCorpName()方法。 设计MobileTelephone类(模拟手机),该类有一个useSIM(SIM card)方法,该方法的参数是SIM类型。显然,参数card可以是抽象类SIM的任何一个子类对象的上转型对象,即参数card可以调用SIM的子类重写的giveNumber()方法显示手机所使用的号码、调用子类重写的giveCorpName()方法显示该号码所归属的公司。 编写有SIM类及其子类:SIMOfChinaMobile(模拟移动公司提供的卡),SIMOfChinaUnicom(模拟移动公司提供的卡)和MobileTelephone类。
抽象类SIM:
```java
public abstract class SIM {
private String number; // 电话号码
// 构造方法
public SIM(String number) {
this.number = number;
}
// 抽象方法
public abstract String giveNumber(); // 获取电话号码
public abstract void setNumber(String number); // 设置电话号码
public abstract String giveCorpName(); // 获取所属公司名
}
```
SIMOfChinaMobile类:
```java
public class SIMOfChinaMobile extends SIM {
// 构造方法
public SIMOfChinaMobile(String number) {
super(number); // 调用父类构造方法
}
// 实现抽象方法
@Override
public String giveNumber() {
return super.number; // 返回电话号码
}
@Override
public void setNumber(String number) {
super.number = number; // 设置电话号码
}
@Override
public String giveCorpName() {
return "中国移动"; // 返回所属公司名
}
}
```
SIMOfChinaUnicom类:
```java
public class SIMOfChinaUnicom extends SIM {
// 构造方法
public SIMOfChinaUnicom(String number) {
super(number); // 调用父类构造方法
}
// 实现抽象方法
@Override
public String giveNumber() {
return super.number; // 返回电话号码
}
@Override
public void setNumber(String number) {
super.number = number; // 设置电话号码
}
@Override
public String giveCorpName() {
return "中国联通"; // 返回所属公司名
}
}
```
MobileTelephone类:
```java
public class MobileTelephone {
public void useSIM(SIM card) {
System.out.println("手机使用的号码为:" + card.giveNumber());
System.out.println("号码所属的公司为:" + card.giveCorpName());
}
}
```
使用方法:
```java
public class Test {
public static void main(String[] args) {
MobileTelephone mobilePhone = new MobileTelephone();
SIM sim1 = new SIMOfChinaMobile("13800138000");
SIM sim2 = new SIMOfChinaUnicom("13900139000");
mobilePhone.useSIM(sim1);
mobilePhone.useSIM(sim2);
}
}
```
输出结果:
```
手机使用的号码为:13800138000
号码所属的公司为:中国移动
手机使用的号码为:13900139000
号码所属的公司为:中国联通
```
阅读全文