Java首先设计一个抽象类SIM,该抽象类有三个抽象方法giveNumber(),setNumber()和giveCorpName(),那么SIM的子类必须实现giveNumber(),setNumber()和giveCorpName()方法。 设计MobileTelephone类(模拟手机),该类有一个useSIM(SIM card)方法,该方法的参数是SIM类型。显然,参数card可以是抽象类SIM的任何一个子类对象的上转型对象,即参数card可以调用SIM的子类重写的giveNumber()方法显示手机所使用的号码、调用子类重写的giveCorpName()方法显示该号码所归属的公司。 编写有SIM类及其子类:SIMOfChinaMobile(模拟移动公司提供的卡),SIMOfChinaUnicom(模拟移动公司提供的卡)和MobileTelephone类。
时间: 2023-05-26 15:07:11 浏览: 101
Java面向对象程序设计抽象方法、抽象类.ppt
抽象类 SIM:
```java
public abstract class SIM {
public abstract String giveNumber();
public abstract void setNumber(String number);
public abstract String giveCorpName();
}
```
移动公司提供的卡:
```java
public class SIMOfChinaMobile extends SIM {
private String number;
@Override
public String giveNumber() {
return number;
}
@Override
public void setNumber(String number) {
this.number = number;
}
@Override
public String giveCorpName() {
return "China Mobile";
}
}
```
联通公司提供的卡:
```java
public class SIMOfChinaUnicom extends SIM {
private String number;
@Override
public String giveNumber() {
return number;
}
@Override
public void setNumber(String number) {
this.number = number;
}
@Override
public String giveCorpName() {
return "China Unicom";
}
}
```
手机类:
```java
public class MobileTelephone {
private SIM sim;
public void useSIM(SIM card) {
this.sim = card;
System.out.println("Phone number: " + sim.giveNumber());
System.out.println("Company name: " + sim.giveCorpName());
}
}
```
使用例子:
```java
public class Main {
public static void main(String[] args){
MobileTelephone phone = new MobileTelephone();
SIMOfChinaMobile chinaMobileSIM = new SIMOfChinaMobile();
chinaMobileSIM.setNumber("138********"); // 设置手机号码
phone.useSIM(chinaMobileSIM); // 使用移动卡
SIMOfChinaUnicom chinaUnicomSIM = new SIMOfChinaUnicom();
chinaUnicomSIM.setNumber("186********"); // 设置手机号码
phone.useSIM(chinaUnicomSIM); // 使用联通卡
}
}
```
输出:
```
Phone number: 138********
Company name: China Mobile
Phone number: 186********
Company name: China Unicom
```
阅读全文