多态应用
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);
}
}
来源:https://www.cnblogs.com/wenyule/p/12213875.html