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

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

属性 方法
棋子类 颜色(判定先后手) 移动
棋盘类 样式(九宫格棋盘还是象棋棋盘等) 找某一棋子位置
规则类 判断输赢

面向对象的三大特点:封装,继承,多态,

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

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

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

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

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

通过下棋理解面向对象。相关推荐

  1. 深入理解面向对象 -- 基于 JavaScript 实现

    我们在学习编程时,避免不了会接触一个概念,叫:面向对象编程(Object-oriented programming,缩写:oop) (不是搞对象那个对象哈),其实我们的编程方式,不止有面向对象,还有 ...

  2. 从C++到Java --理解面向对象是关键所在

    从C++到Java --理解面向对象是关键所在 本文将提供一个对这些概念的简明的解释,而不是提供一些深入的或者如何使用的问题.记住,这只是依据我对Java的经验带而提出的一些主要的差异. Java在虚 ...

  3. 4.C++深入理解 面向对象部分3

    C++深入理解 面向对象部分 一.C++流的控制 1.1 输入输出流相关的类   输入输出重定向例子, #include <iostream> using namespace std; i ...

  4. 3.C++深入理解 面向对象部分2

    C++深入理解 面向对象部分 一.面向对象深入部分   在前几天 360 笔试做下来,感觉自己会的难度还行,还没学过的就乱选了,算法题部分做出来运行结果也是对的,但是两个解答题一点都没见过,直接就跳过 ...

  5. 2.C++深入理解 面向对象部分1

    C++深入理解 面向对象部分 一.补充知识   现在开始刷 北京大学 程序实际与算法三 视频面向对象部分学习,记录自己不懂的知识,这里以后打算学习 C++ 了,把这门语言吃透再学习新的,这里使用的运行 ...

  6. (自己收藏)全面理解面向对象的 JavaScript

    全面理解面向对象的 JavaScript 前天 by 资深编辑 WnouM 评论(3) 有2727人浏览 收藏 javascript 面向对象 对象 类 原型 < >猎头职位: 上海:Ju ...

  7. 深度理解面向对象的基础-抽象(一)

    前言: 面向对象这个词对于我们程序开发人员来说,应该都不陌生,我们总说开发要面向对象,但实际上在编写代码的过程中,很多人虽然实现了封装.继承.多态但却不是面向对象的程序设计,而是面向过程的实现逻辑,徒 ...

  8. 如何理解面向对象的封装、继承、多态

    如何理解面向对象的封装.继承.多态 面向对象可以说是一种对现实是事物的抽象,将一类事物抽象成一个类,类里面包含了这类事物具有的公共部分,以及我们对这些部分的操作,也就是对应的数据和过程. 面向对象思想 ...

  9. Java SE 008 理解面向对象程序设计 (Inside Object Oriented Programming)

    Java SE 008 理解面向对象程序设计 (Inside Object Oriented Programming) 前言:此笔记为圣思园张龙老师讲述的java视频课程笔记,自己看视频学习时记录的, ...

最新文章

  1. java异常处理之throw, throws,try和catch
  2. HTML DOM 属性
  3. 涂鸦智能 dubbo-go 亿级流量的实践与探索
  4. python核心编程:杂记2
  5. 小程序遵循的语法_我如何构建一个遵循股市针对freeCodeCamp挑战的应用程序。
  6. htop进程管理工具
  7. python scikit库
  8. win10python安装失败_python3.6 + win10 安装 python-Levenshtein 错误记录
  9. ISO27001信息安全管理体系
  10. 【图像特征提取】基于脉冲耦合神经网络(PCNN)实现图像特征提取含Matlab源码
  11. Crust “方舟计划”播报# 3|Crust社区杰出贡献节点——20 位“开拓者”诞生
  12. 使用 Burp Suite 暴力破解密码 撞库攻击 从0到1手摸手教学
  13. 暂时解决Xmarks无法同步
  14. 逻辑回归实现文本分类
  15. JS实现双十一倒计时抢购效果
  16. Mac OS Android Studio 启动模拟器失败
  17. 不懂zencart该如何找出路-新手soho建站指南
  18. IGBT静态参数测试
  19. 一般网站上传图片的大小是多少?网站图片上传格式大小建议 附带简单修图方法
  20. linux命令和选项作用,linux tar 命令中 -f选项作用

热门文章

  1. 脑科学是个啥,跟人工智能有什么渊源「AI核心算法」
  2. ORACLE UGA与CGA
  3. 网吧无盘主副服务器,网吧无盘服务器教程
  4. 结婚的80后 VS 飘着的70后
  5. 洋桃电子STM32物联网入门30步笔记三、CubeMX图形化编程、设置开发板上的IO口
  6. 浅谈ThreadPoolExecute(JDK8)
  7. iOS开发-iOS14画中画-OC
  8. Mac——开启键盘F1 - F12功能键
  9. UE4数字孪生 OD线开发浅析
  10. [Unity3D]Unity官方认证考试模拟题