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);
         }
     }
  • 相关阅读:
    BZOJ_1221_ [HNOI2001]_软件开发(最小费用流,网络流24题#10)
    POJ_1269_Intersecting_Lines_(计算几何基础)
    BZOJ_2049_[Sdoi_2008]_Cave_洞穴勘测_(LCT/并查集)
    BZOJ_2002_弹飞绵羊_(LCT)
    BZOJ_3282_Tree_(LCT)
    CodeForces_#354_Div.2_2016.5.25(A+B+C)
    BZOJ_1609_[Usaco2008_Feb]_Eating_Together_麻烦的聚餐_(动态规划,LIS)
    BZOJ_1607_ [Usaco2008_Dec]_Patting_Heads_轻拍牛头_(筛数)
    BZOJ_1606_ [Usaco2008_Dec]_Hay_For_Sale _购买干草_(背包)
    2010多校第一题 hdu3440House Man 差分约束系统
  • 原文地址:https://www.cnblogs.com/wenyule/p/12213875.html
Copyright © 2011-2022 走看看