java面向对象(多态):简单案例
一、多态:同一个对象具有多种形态
二、作用:核心在于方法的重写、覆写,使多种数据类型进行统一,让程序具有超强的扩展性。
三、模拟人物进行网络游戏:
类图:
1.创建游戏父类
/** * @fileName : Game.java * @description : TODO * @author : yangzhihong * @date : 2021年12月15日-上午11:39:08 */ public class Game { public void start() { System.out.println("开机上号!"); } public void play() { System.out.println("热血沸腾,沉迷其中无法自拔!"); } public void end() { System.out.println("收工,回家吃饭! "); } }
2.DNF游戏类
public class DNF extends Game { public void play() { System.out.println("刷刷刷,刷图使我快乐!"); } }
3.LOL游戏类
public class LOL extends Game { public void play() { System.out.println("沉迷在联盟的世界无法自拔"); } public void gailun() { System.out.println("来一波盖伦大宝剑!"); } }
4.CS游戏类
public class CS extends Game { public void play() { System.out.println("没有八倍镜,照样干翻对面!"); } }
5.人物类
public class Player { public void happy(Game game) { game.start(); game.play(); game.end(); } }
6.场景类,执行方法入口:
public static void main(String[] args) { Game game1 = new DNF(); //向上转型 Game game2 = new LOL(); Game game3 = new CS(); LOL g = (LOL)game2; //向下转型 g.gailun(); Player p = new Player(); p.happy(game1); p.happy(game2); p.happy(game3); } }
小小总结:
①.向上转型:把子类的对象转化为父类的变量
缺点:会屏蔽掉子类中特有的方法
②.向下转型:把父类的变量转化回子类的变量
缺点:转化有风险,java要求必须写强制转化,格式(向上转化后的数据类型)变量
③两个没有关系的类对象是不能够转型的,一定会产生ClassCastException