利用多态特性,创建一个手机类Phones,定义打电话的方式call,创建三个子类,并在各自的方法中重写方法,编写程序入口main()方法,实现多种手机打电话

匿名 (未验证) 提交于 2019-12-02 23:49:02

|--需求说明

利用多态特性,创建一个手机类Phones,定义打电话的方式call,创建三个子类,并在各自的方法中重写方法,编写程序入口main()方法,实现两种手机打电话

|--解题思路

采用简单工厂模式,

设计四个角色: 工厂类、抽象产品类、具体产品类



由一个工厂类,根据客户传入的参数来决定创建/生产哪一种具体产品。

|--代码内容

1 //这个Phones类是一个抽象类 2 public abstract class Phones { 3     //定义一个抽象方法,call,用来被不同的类继承 4     public abstract void call(); 5 }
抽象产品类---Phones
1 public class IPone extends Phones{ 2 //重写父类的call方法,用来实现具体的苹果手机打电话 3     @Override 4     public void call() { 5         System.out.println("苹果手机打电话"); 6     } 7 }
具体产品类----Iphone
1 public class APhone extends Phones { 2 //重写父类的call方法,用来实现具体的安卓手机打电话 3     @Override 4     public void call() { 5         System.out.println("安卓手机打电话"); 6     } 7 }
具体产品类---APhone
1 public class WPhone extends Phones { 2 //重写父类的call方法,用来实现具体的Windows手机打电话 3     @Override 4     public void call() { 5         System.out.println("Windows Phone 手机打电话"); 6     } 7 }
具体产品类---WPhone
 1 public class BaseStation {  2     //将抽象产品类Phones作为返回类型,设定打电话方法  3     public Phones callPhone(String type) {  4         //判断客户提供的信息,按客户给定的信息判断使用什么样的手机打电话  5         if (type.equals("iphone")) {  6             return new IPone();  7         } else if (type.equals("aphone")) {  8             return new APhone();  9         } else { 10             return new WPhone(); 11         } 12     } 13 }
工厂类---BaseStation类
 1 import java.util.Scanner;  2 public class User {  3     static Scanner sc = new Scanner(System.in);  4   5     public static void main(String[] args) {  6         //设定一个布尔变量,用于判定是不是要继续打电话  7         boolean flag = false;  8         //设定一个接受用户输入的变量  9         String answer; 10         //创建工厂类的实例 11         BaseStation ba = new BaseStation(); 12         //创建一个变量用于传递参数 13         String str; 14         do { 15             System.out.println("请问要使用什么手机打电话?1.Iphoen   2.Aphone   3或其他任意键.Wphoen"); 16             answer = sc.next(); 17             //如果用户按提示按键选择,则str得到一个具体的值 18             if ("1".equals(answer)){ 19                 str = "iphone"; 20             }else if("2".equals(answer)){ 21                 str = "aphone"; 22  23             }else { 24                 str = "wphone"; 25             } 26             //将工厂类加工的方法传递给抽象产品类 27             Phones phones = ba.callPhone(str); 28             //抽象产品父类动态绑定具体产品类的方法 29             phones.call(); 30             System.out.println("还要打电话吗?按n退出,按其他任意字符继续打电话......"); 31             answer = sc.next(); 32             //按“n”退出,按其他任意键继续 33             if ("n".equals(answer)){ 34                 flag = true; 35             } 36             System.out.println("************-------------**********\n\n"); 37  38         }while (!flag); 39         System.out.println("嗯,再见,你再用这么多手机打电话老子打死你"); 40  41     } 42 }
客户类----User类

|--运行结果

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!