终于在开发中用到自己的继承了、多态了
来源:互联网 发布:淘宝打假部门联系方式 编辑:程序博客网 时间:2024/05/16 23:48
* 关于继承、多态,我想学过java的人都熟悉,来跟着我回忆一下面向对象的三大特性:封装、继承、多态。但是我们以前学的主要就是什么叫做继承,以及我们怎么去写一个继承,在java里面用extends,在c++里面用:,但是我们学完后可能只是会写了,但是发现病没用怎么用的到,尤其在刚开始做开发的时候,我们有时候即使需要用继承,但我们也不知道怎么去用。在这里我就以我的一个例子来说一下继承在开发中的使用。
前一段时间我在学习写贪吃蛇,在写贪吃蛇游戏的时候,我几乎没用到半点的继承,我也非常的想用,但是不知道到底应该在什么时候用,或者不知道怎么去使用,所以我记得我在写贪吃蛇游戏中的砖块以及苹果,还有边界的时候我虽然想用继承在里面(因为这三者都只是一个颜色块),但是最后写完了却发现还是用的if-else判断的,这样大大的降低了代码的可读性 – 例如我在主界面要画出来这三样东西,我以前的做法是:
{ List<Edg> edg;//边界 edg.add(...); List<Block> block;//砖块 block.add(); List<Apple> apple;//苹果 //然后分别调用draw方法画出 for{ block.draw(); } .. ..}
这样写虽然能够去实现功能,但是这样的实现方法无疑是麻烦的,并且增加了代码的冗余。我也是后来觉得这样写不好,所以我就更改了策略,便把这些都集成于一个ColorBlock类,这样的话大家只需要去重写有关draw方法就行了。
实现大概如下
class ColorBlock { draw();//省略写法,但要抽象,因为要多态}class Block extends ColorBlock{ darw(){};//Block的draw的实现}class Apple extends ColorBlock{ darw(){};//Apple的draw的实现}....
经过这样的定义后我们在画的时候就简单了
List<ColorBlock> cblock;cblock.add(new Block());cblock.add(new Apple());for(){ cblock.draw();}
虽然这样写看着有些麻烦,但是其实用起来相当的舒服,以后要想加入新的元素,就只需要将其继承ColorBlock,然后加到那个List里面就ok了,岂不是爽哉,增加了扩展性,也使代码看起来有条理。
上面就是我在这个案例里面关于继承和多态使用的一点总结,总的就是说把同种类型的东西抽象出一个父类或者接口,并在其中增加抽象方法,然后子类实现那些方法,这样的话在使用的时候只需要用父类来指向子类对象,剩下的java帮你做了,你不需要去判断他是一个Apple或者Block,java帮你做了。
阅读全文
0 0
- 终于在开发中用到自己的继承了、多态了
- 终于用上了自己的BLOG了!
- 终于了又自己的博客了
- 终于开了自己的博客了
- 终于在csdn注册了自己的blog
- 今天终于在CSDN有了一个自己的窝了
- 终于想在CSDN上开设自己的博客了!
- ofbiz开发,终于有自己的专业性网站了
- 在自己开发的软件中用到的图标
- 终于明白自己了
- 做了开发这么多年,终于自己弄了二个站
- [开源][原]经过努力,终于在realserver的SDK上开发出了我自己的realhelix plug-in
- 终于摆脱windows能在纯净的linux开发了
- 终于拥有自己的blog了!
- 终于有自己的Blog了
- 终于有自己的blog了
- 终于有了自己的Blog了
- 终于有自己的Blog了!
- Linux 常用命令(二)
- HDU1166树状数组
- struts2框架学习笔记03
- 编程语言—专业词汇理解
- HDU6069---Counting Divisors(2017多校联赛:数学)
- 终于在开发中用到自己的继承了、多态了
- linux 密码设置问题
- 迭代list,map
- 微信公众开发初始化菜单40017
- hdu3123--阶乘和的处理方法
- 地球坐标,火星坐标,百度坐标转换
- Subline text3 配置java程序编译运行在subline控制台环境和windows控制台
- 前后端数据交互 ---- 跨域请求
- input只能输入数字并限制长度