面向对象课程完结即可编写一个简单的飞机大战程序。我觉得我需要总结一下

  飞机大战中类的设计:

    • 父类:FlyingObject(抽象类)
    • 接口:Award 、Enemy
    • 子类:Hero、Bullet、Airplane (实现Enemy接口)、 Bee (实现Award接口)
    • 运行类:ShootGame

  Hero、Bullet、Airplane 、 Bee 均继承自FlyingObject类,FLyingObject具有他们的公共属性以及行为,因为FlyingObject并不需要被实例化,那么大可以将之设计为抽象类。

  Award、Enemy是两个接口,分别表示奖励和敌人,Award中定义了奖励类型常量和获取奖励方法,Enemy定义了获取敌机含有的分数方法。Bee、Airp继承了FlyingObject类的同时分别实现了Award、Enemy接口,让他们继承父类的同时也具有了接口中的属性方法。接口的设计提高了程序的扩展性,如果说还想添加一个大黄蜂(BigBee)类,既可以获得奖励又能获得分数,这个类继承FlyingObject在实现Award和Enemy接口即可。一个类是能继承一个父类,但可以实现多个接口,接口让程序的扩展性大大提升。是不是顿时觉得接口萌萌哒,特别好用呢。

  ShootGame则是应用程序具体逻辑的实现,定义了舞台界面的属性、方法。其实质是数据的使用层,之前的几个类都是数据基础,这个类则是将数据组装。额,希望我的理解没有问题。

  一个好的应用程序必定有一个好的设计,继需求分析阶段后,类和数据结构的设计同样是一个非常重要的阶段,在几次的项目实践中,我大概已经领悟到了这一点。没有好的设计,往后的路只有一个字——苦...哇!

  至于类的设计原则:首先找出所有对象共有的属性和方法,设计出父类,至于父类是设计成抽象类还是非抽象类就看程序需不需要将他实例化对象。然后看每个类是不是还具有除父类以外的其他共有方法功能,将其抽象为接口。其次是类的方法,方法的设计尽量降低其耦合性,说白了就是把每一个功能拆开拆开,分解分解。

  关于面向对象:

  面向对象是什么?面向对象就是将客观事物看做具有状态和行为的对象,通过抽象找出同一类对象的共同状态和行为,构成模型——类(组成Java程序的最小单位)。

  面向对象具有如下基本特征

  • 抽象和封装。抽象的结果就是形成类,类中的数据和方法是受保护的,可以根据需要设置不同的访问控制属性,从而实现了数据的封装,保证了数据的安全性,隐藏了方法的实现细节,也方便了使用。
  • 继承。可以对已有类增加属性和功能,或进行部分修改来建立新的类,实现了代码的重用。
  • 多态。
    • 同一个消息被不同的对象接收(即同一类型的引用指向不同对象)时可以导致不同的行为。---行为多态
    • 同一对象被造型成不同类型后可以具有不同的功能。---对象多态

  面向对象中的易错点总结:

  1. 关于static :

  • static修饰变量:那么该变量就是属于类的,存在方法区中,只有一份(所有对象共享),通过类名打点访问。
  • static修饰方法:存在方法区中,只有一份。因为没有隐式的this传递,所以在静态方法中不能直接访问实例变量以及非静态方法。
  • static块:在类被加载期间自动执行,因为类只被加载一次,所以静态块也只会执行一次。常常用于加载(初始化)静态资源如图片、音频、视频等。

  2. 关于子类中方法重写之后的调用问题:就这么想,重写的目的是什么呢?当然是为了不同的对象有不同的方法呀,如果说子类重写了父类方法,但是任然调用父类方法,那就一点用都没有了啊,所以,不管怎样,只要引用调用的方法是子类重写了的方法,就会调用子类方法。除去重写方法,其他数据就得看引用类型,一个子类对象被造型成父类对象(或其实现的接口)后,引用能访问的方法是不是就减少了啊,因为此时是需要看父类有什么了。

飞机大战编写以及Java的面向对象总结的更多相关文章

  1. 用面向对象的编程方式实现飞机大战小游戏,java版

    概述 本文将使用java语言以面向对象的编程方式一步一步实现飞机大战这个小游戏 本篇文章仅供参考,如有写的不好的地方或者各位读者哪里没看懂可以在评论区给我留言 或者邮件8274551712@qq.co ...

  2. 一、利用Python编写飞机大战游戏-面向对象设计思想

    相信大家看到过网上很多关于飞机大战的项目,但是对其中的模块方法,以及使用和游戏工作原理都不了解,看的也是一脸懵逼,根本看不下去.下面我做个详细讲解,在做此游戏需要用到pygame模块,所以这一章先进行 ...

  3. java版飞机大战 实战项目详细步骤.md

    [toc] 分析 飞机大战 首先对这个游戏分析,在屏幕上的物体都是飞行物,我们可以把建一个类,让其他飞行物继承这个类.游戏中应有英雄机(也就是自己控制的飞机).敌人.而敌人应该分为打死给分的飞机(就是 ...

  4. Java飞机大战源代码

    刚学不久java,做了一个飞机大战的小小小小游戏,现在把这个思路总结以及代码分享出来.大佬别吐槽(emmmmmm .....开发环境:jdk1.7 开发工具:eclipese PlanelJPanel ...

  5. Java飞机大战MVC版

    PlaneWar Java飞机大战MVC版 //无聊时偷的雷霆战机素材写了一个飞机大战,本意是练习mvc,但写得还是不清晰 github下载:https://github.com/dejavudwh/ ...

  6. java飞机大战之子弹的自动生成

    import java.awt.Graphics; import java.util.ArrayList; import javax.swing.JFrame; import javax.swing. ...

  7. java之线程飞机大战制作

    import java.awt.Graphics; import java.util.ArrayList; import javax.swing.JFrame; import javax.swing. ...

  8. 飞机大战-面向对象-pygame

    飞机大战 最近学习了python的面向对象,对面向对象的理解不是很深刻. 面向对象是数据和函数的'打包整理',将相关数据和处理数据的方法集中在一个地方,方便使用和管理. 本着学习的目的,在网上找了这个 ...

  9. Java实现飞机大战游戏

    飞机大战详细文档 文末有源代码,以及本游戏使用的所有素材,将plane2文件复制在src文件下可以直接运行. 实现效果: 结构设计 角色设计 飞行对象类 FlyObject 战机类 我的飞机 MyPl ...

随机推荐

  1. Qt写Activex插件 总结

    最近写的插件功能基本完成,也遇到了一些坑,在这里记录一下. 我写的这个插件的js接口是仿造google earth的js接口,尽可能的达到与它的api一致.先从最简单的说起: 1. 导出接口中的flo ...

  2. crawler4j 学习(二)

    crawler4j 学习(二) 实现控制器类以制定抓取的种子(seed).中间数据存储的文件夹.并发线程的数目: public class Controller { public static voi ...

  3. ZeroMQ接口函数之 :zmq_msg_init_size - 使用一个指定的空间大小初始化ZMQ消息对象

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_init_size zmq_msg_init_size(3) ØMQ Manual - ØMQ/3.2.5 ...

  4. scrapy爬虫笔记(三)------写入源文件的爬取

    开始爬取网页:(2)写入源文件的爬取 为了使代码易于修改,更清晰高效的爬取网页,我们将代码写入源文件进行爬取. 主要分为以下几个步骤: 一.使用scrapy创建爬虫框架: 二.修改并编写源代码,确定我 ...

  5. 01 LabVIEW的类中各个Scope的范围

    范例地址: D:\Program Files (x86)\National Instruments\LabVIEW 2015\examples\Object-Oriented Programming\ ...

  6. 【转】ACM博弈知识汇总

    博弈知识汇总 转自:http://www.cnblogs.com/kuangbin/archive/2011/08/28/2156426.html 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍 ...

  7. PHP关于反斜杠处理函数addslashes()和stripslashes()的用法

    addslashes() 例子: <?php $str = "Who's John Adams?"; echo $str . " This is not safe ...

  8. matlab函数大全

    Matlab 图像处理相关函数命令大全 一.通用函数: colorbar  显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ col ...

  9. Windows 7无法卸载及安装IE11的解决方法

    1. 清空 C:\Windows\TEMP\  中的所有内容 2. 以管理员身份运行命令行,在命令中行输入下面的代码: FORFILES /P %WINDIR%\servicing\Packages ...

  10. PhpStorm 10 破解方法

    最新版PhpStorm 10正式版改进了PHP 7支持,改进代码完成功能. PhpStorm 是最好的PHP开发工具,使用它进行PHP开发将会让你感觉到编程的乐趣. 快乐无极终于从oschina看到了 ...