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

经验分享 程序员 微信小程序 职场和发展