通过下棋理解面向对象。
假如我要写一个下棋的程序,
以面向对象的思想来写。那么
类 | 属性 | 方法 |
---|---|---|
棋子类 | 颜色(判定先后手) | 移动 |
棋盘类 | 样式(九宫格棋盘还是象棋棋盘等) | 找某一棋子位置 |
规则类 | 判断输赢 |
面向对象的三大特点:封装,继承,多态,
想要写一个具体的游戏,那么就需要细化属性和方法
如果是一个五子棋游戏,我们可以继承棋子类,添加id属性(因为不论黑方还是白方,棋子都是相同的,想要判断棋子的位置就需要通过一个能区分不同棋子的属性来寻找。可以继承规则类,添加 “判断是否有两个颜色相同的棋子相邻” 方法,
如果是一个象棋游戏,可以继承棋子类后添加名字(象棋棋子不全相同,每个都有名字兵马炮等),数量(象棋两个象两个车一个帅)这两个属性。还可以继承规则类,添加 “马的斜前方是否有阻挡物” 方法等用于判断棋子是否能移动。
这样在不改变原来类的基础上添加新的属性或方法就叫做继承。
象棋游戏里,我们继承棋子类后需要重写其 “移动” 方法。象棋游戏的棋子对象可以有马棋子对象,兵棋子对象等。马对象的移动重写后表现为 “沿两个格子的对角线移动”,而兵对象的移动方法重写后则表现为 “只能向前移动一格” 。
这样当一个类被继承后,子类对象引用同一方法表现出的不同行为就叫做多态
下棋的例子不太适合讲封装,所以就不写了-_-。
通过下棋理解面向对象。相关推荐
- 深入理解面向对象 -- 基于 JavaScript 实现
我们在学习编程时,避免不了会接触一个概念,叫:面向对象编程(Object-oriented programming,缩写:oop) (不是搞对象那个对象哈),其实我们的编程方式,不止有面向对象,还有 ...
- 从C++到Java --理解面向对象是关键所在
从C++到Java --理解面向对象是关键所在 本文将提供一个对这些概念的简明的解释,而不是提供一些深入的或者如何使用的问题.记住,这只是依据我对Java的经验带而提出的一些主要的差异. Java在虚 ...
- 4.C++深入理解 面向对象部分3
C++深入理解 面向对象部分 一.C++流的控制 1.1 输入输出流相关的类 输入输出重定向例子, #include <iostream> using namespace std; i ...
- 3.C++深入理解 面向对象部分2
C++深入理解 面向对象部分 一.面向对象深入部分 在前几天 360 笔试做下来,感觉自己会的难度还行,还没学过的就乱选了,算法题部分做出来运行结果也是对的,但是两个解答题一点都没见过,直接就跳过 ...
- 2.C++深入理解 面向对象部分1
C++深入理解 面向对象部分 一.补充知识 现在开始刷 北京大学 程序实际与算法三 视频面向对象部分学习,记录自己不懂的知识,这里以后打算学习 C++ 了,把这门语言吃透再学习新的,这里使用的运行 ...
- (自己收藏)全面理解面向对象的 JavaScript
全面理解面向对象的 JavaScript 前天 by 资深编辑 WnouM 评论(3) 有2727人浏览 收藏 javascript 面向对象 对象 类 原型 < >猎头职位: 上海:Ju ...
- 深度理解面向对象的基础-抽象(一)
前言: 面向对象这个词对于我们程序开发人员来说,应该都不陌生,我们总说开发要面向对象,但实际上在编写代码的过程中,很多人虽然实现了封装.继承.多态但却不是面向对象的程序设计,而是面向过程的实现逻辑,徒 ...
- 如何理解面向对象的封装、继承、多态
如何理解面向对象的封装.继承.多态 面向对象可以说是一种对现实是事物的抽象,将一类事物抽象成一个类,类里面包含了这类事物具有的公共部分,以及我们对这些部分的操作,也就是对应的数据和过程. 面向对象思想 ...
- Java SE 008 理解面向对象程序设计 (Inside Object Oriented Programming)
Java SE 008 理解面向对象程序设计 (Inside Object Oriented Programming) 前言:此笔记为圣思园张龙老师讲述的java视频课程笔记,自己看视频学习时记录的, ...
最新文章
- java异常处理之throw, throws,try和catch
- HTML DOM 属性
- 涂鸦智能 dubbo-go 亿级流量的实践与探索
- python核心编程:杂记2
- 小程序遵循的语法_我如何构建一个遵循股市针对freeCodeCamp挑战的应用程序。
- htop进程管理工具
- python scikit库
- win10python安装失败_python3.6 + win10 安装 python-Levenshtein 错误记录
- ISO27001信息安全管理体系
- 【图像特征提取】基于脉冲耦合神经网络(PCNN)实现图像特征提取含Matlab源码
- Crust “方舟计划”播报# 3|Crust社区杰出贡献节点——20 位“开拓者”诞生
- 使用 Burp Suite 暴力破解密码 撞库攻击 从0到1手摸手教学
- 暂时解决Xmarks无法同步
- 逻辑回归实现文本分类
- JS实现双十一倒计时抢购效果
- Mac OS Android Studio 启动模拟器失败
- 不懂zencart该如何找出路-新手soho建站指南
- IGBT静态参数测试
- 一般网站上传图片的大小是多少?网站图片上传格式大小建议 附带简单修图方法
- linux命令和选项作用,linux tar 命令中 -f选项作用