通过下棋理解面向对象。

假如我要写一个下棋的程序,

以面向对象的思想来写。那么

属性方法
棋子类颜色(判定先后手)移动
棋盘类样式(九宫格棋盘还是象棋棋盘等)找某一棋子位置
规则类判断输赢
面向对象的三大特点:封装,继承,多态,

想要写一个具体的游戏,那么就需要细化属性和方法
如果是一个五子棋游戏,我们可以继承棋子类,添加id属性(因为不论黑方还是白方,棋子都是相同的,想要判断棋子的位置就需要通过一个能区分不同棋子的属性来寻找。可以继承规则类,添加 “判断是否有两个颜色相同的棋子相邻” 方法,

如果是一个象棋游戏,可以继承棋子类后添加名字(象棋棋子不全相同,每个都有名字兵马炮等),数量(象棋两个象两个车一个帅)这两个属性。还可以继承规则类,添加 “马的斜前方是否有阻挡物” 方法等用于判断棋子是否能移动。

这样在不改变原来类的基础上添加新的属性或方法就叫做继承。

象棋游戏里,我们继承棋子类后需要重写其 “移动” 方法。象棋游戏的棋子对象可以有马棋子对象,兵棋子对象等。马对象的移动重写后表现为 “沿两个格子的对角线移动”,而兵对象的移动方法重写后则表现为 “只能向前移动一格” 。
这样当一个类被继承后,子类对象引用同一方法表现出的不同行为就叫做多态

下棋的例子不太适合讲封装,所以就不写了-_-。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值