zoukankan      html  css  js  c++  java
  • 多态应用

    多态应用

    package com.lewen.opp;
    
    public class App {
        public void showAdd() {
            System.out.println("打广告");
        }
    }
    package com.lewen.opp;
    
    public class QQ extends App {
        public void showAdd() {
            System.out.println("QQ渠道打广告");
        }
    }
    package com.lewen.opp;
    
    public class WeChat extends App {
        public void showAdd() {
            System.out.println("微信渠道打广告");
        }
    }
    
    
    
    package com.lewen.opp;
    
    public class Business {
        public void makeAdd(App app) {
            app.showAdd();
            System.out.println("广而告之");
        }
    }

    测试一下

    package com.lewen.opp;
    
    public class Customer {
        public static void main(String[] args) {
            Business bs = new Business();
    //        QQ qq = new QQ();
    //        WeChat wechat = new WeChat();
            App qq = new QQ();    // 向上转与不转都可以,
            App wechat = new WeChat();
            bs.makeAdd(qq);
            bs.makeAdd(wechat);
        }
    
    }

    结果:

    QQ渠道打广告

    广而告之

    微信渠道打广告

    广而告之

    总结: 多态具有超强的可扩展性.

    练习

    根据以下类图来完成”游戏代练”场景
     
    类图地址: https://www.processon.com/view/link/5c91ed1ae4b0f88919b54bc7
     
    Game:
     
     package com.xyq.bao;
     ​
     public class Game {
     ​
         public void start(){
             System.out.println("开机, 准备战斗");
         }
         public void play(){
             System.out.println("玩儿起来啊");
         }
     ​
         public void end(){
             System.out.println("关机, 结束战斗");
         }
     }
     
     ​
    DNF:
     
     package com.xyq.bao;
     ​
     public class DNF extends Game{
     ​
         public void play(){
             System.out.println("开挂, 刷图, 机械牛你别跑");
         }
     }
     
     ​
    LOL:
     
     package com.xyq.bao;
     ​
     public class LOL extends Game {
         public void play(){
             System.out.println("还是盖伦牛B, 神马快乐托儿所, 都是渣渣. ");
         }
     }
     ​
    CS:
     
     package com.xyq.bao;
     ​
     public class CS extends Game {
         public void play(){
             System.out.println("8倍镜没有. 还是喷子比较牛B");
         }
     }
     ​
    Player:
     
     package com.xyq.bao;
     ​
     public class Player {
     ​
         public void happy(Game game){
             game.start();
             game.play();
             game.end();
         }
     }
     
     ​
    Client:
     
     package com.xyq.bao;
     ​
     public class Client {
         public static void main(String[] args) {
             Player player = new Player();
             Game game1 = new DNF();
             Game game2 = new LOL();
             Game game3 = new CS();
     ​
             player.happy(game1);
             player.happy(game2);
             player.happy(game3);
         }
     }
  • 相关阅读:
    (转)JAVA国际化
    (转)实现这两个接口ModelDriven<T>,Preparable有什么用?
    cordova 与 phonegap关系
    NApache+JBOSS架构方案
    (转)Java 标注(Annotation)详解
    Jboss集群(五)--F5硬件负载均衡器双击热备 + Jboss集群终极实现
    GTK+/GNOME编程(一)
    二维数组中查找指定的数
    计算字符串距离
    统计指定数字的个数,并将其按权值10的次方数相加
  • 原文地址:https://www.cnblogs.com/wenyule/p/12213875.html
Copyright © 2011-2022 走看看