现有中国电信ChinaTelecom中国移动ChinaMobile中国联通ChinaUnicom 他们都属于网络运营商NetworkOperator 都有各自的网络类型type比如: 中国电信的网络类型为LTE中国移动的网络类型为TD-LTE中国联通的网络类型为WCDMA 网络运营商都有安装宽带installBroadband和安装有线电视installCableTV的行为 网络运
首先,我们可以创建一个父类NetworkOperator,表示网络运营商,其中包含网络类型和安装宽带、安装有线电视的方法。
public abstract class NetworkOperator {
protected String type;
public NetworkOperator(String type) {
this.type = type;
}
public abstract void installBroadband();
public abstract void installCableTV();
}
然后,我们可以创建三个子类ChinaTelecom、ChinaMobile和ChinaUnicom来表示具体的网络运营商,它们继承自NetworkOperator,并实现父类中的抽象方法。
public class ChinaTelecom extends NetworkOperator {
public ChinaTelecom() {
super("LTE");
}
@Override
public void installBroadband() {
System.out.println("中国电信正在安装宽带");
}
@Override
public void installCableTV() {
System.out.println("中国电信正在安装有线电视");
}
}
public class ChinaMobile extends NetworkOperator implements IChat {
public ChinaMobile() {
super("TD-LTE");
}
@Override
public void installBroadband() {
System.out.println("中国移动正在安装宽带");
}
@Override
public void installCableTV() {
System.out.println("中国移动正在安装有线电视");
}
@Override
public void chat() {
System.out.println("中国移动正在使用飞信聊天");
}
}
public class ChinaUnicom extends NetworkOperator {
public ChinaUnicom() {
super("WCDMA");
}
@Override
public void installBroadband() {
System.out.println("中国联通正在安装宽带");
}
@Override
public void installCableTV() {
System.out.println("中国联通正在安装有线电视");
}
}
接下来,我们创建两个接口IInternet和ICall,分别表示上网和打电话的功能。
public interface IInternet {
void internet();
}
public interface ICall {
void call();
}
然后,我们可以让ChinaTelecom、ChinaMobile和ChinaUnicom分别实现这两个接口。
public class ChinaTelecom extends NetworkOperator implements IInternet, ICall {
public ChinaTelecom() {
super("LTE");
}
@Override
public void installBroadband() {
System.out.println("中国电信正在安装宽带");
}
@Override
public void installCableTV() {
System.out.println("中国电信正在安装有线电视");
}
@Override
public void internet() {
System.out.println("中国电信正在上网");
}
@Override
public void call() {
System.out.println("中国电信正在打电话");
}
}
public class ChinaMobile extends NetworkOperator implements IInternet, ICall, IChat {
public ChinaMobile() {
super("TD-LTE");
}
@Override
public void installBroadband() {
System.out.println("中国移动正在安装宽带");
}
@Override
public void installCableTV() {
System.out.println("中国移动正在安装有线电视");
}
@Override
public void internet() {
System.out.println("中国移动正在上网");
}
@Override
public void call() {
System.out.println("中国移动正在打电话");
}
@Override
public void chat() {
System.out.println("中国移动正在使用飞信聊天");
}
}
public class ChinaUnicom extends NetworkOperator implements IInternet, ICall {
public ChinaUnicom() {
super("WCDMA");
}
@Override
public void installBroadband() {
System.out.println("中国联通正在安装宽带");
}
@Override
public void installCableTV() {
System.out.println("中国联通正在安装有线电视");
}
@Override
public void internet() {
System.out.println("中国联通正在上网");
}
@Override
public void call() {
System.out.println("中国联通正在打电话");
}
}
现在,我们可以创建对象并调用方法来模拟各网络运营商的关系和功能。
public class Main {
public static void main(String[] args) {
NetworkOperator telecom = new ChinaTelecom();
telecom.installBroadband();
telecom.installCableTV();
((IInternet) telecom).internet();
((ICall) telecom).call();
NetworkOperator mobile = new ChinaMobile();
mobile.installBroadband();
mobile.installCableTV();
((IInternet) mobile).internet();
((ICall) mobile).call();
((IChat) mobile).chat();
NetworkOperator unicom = new ChinaUnicom();
unicom.installBroadband();
unicom.installCableTV();
((IInternet) unicom).internet();
((ICall) unicom).call();
}
}
输出结果:
中国电信正在安装宽带
中国电信正在安装有线电视
中国电信正在上网
中国电信正在打电话
中国移动正在安装宽带
中国移动正在安装有线电视
中国移动正在上网
中国移动正在打电话
中国移动正在使用飞信聊天
中国联通正在安装宽带
中国联通正在安装有线电视
中国联通正在上网
中国联通正在打电话
通过继承和接口的使用,我们成功模拟了中国电信、中国移动和中国联通这三个网络运营商的关系和功能
原文地址: https://www.cveoy.top/t/topic/h5RW 著作权归作者所有。请勿转载和采集!