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

  飞机大战中类的设计:

    • 父类: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. 修改Windows Server 2008密码策略,设置简单密码

    最长使用期限为0表示密码永不过期. 如果是VBOX虚拟机安装,在使用共享文件夹功能时候,需要打开控制面板--网络和共享中心--共享设置--启动网络发现.然后才能映射共享文件夹

  2. apace日常操作和配置

    [root@limt modules]# /usr/sbin/apachectl -h Usage: /usr/sbin/httpd [-D name] [-d directory] [-f file ...

  3. ZeroMQ接口函数之 :zmq_msg_more - 指出是不是还有更多的消息部分可以接收

    ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_more zmq_msg_more(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_ ...

  4. iOS宏和__attribute__

    本文目录 iOS宏的经典用法 Apple的习惯 __attribute__ iOS宏的经典用法 1.常量宏.表达式宏 #define kTabBarH (49.0f) #define kScreenH ...

  5. 移动端lCalendar纯原生js日期时间选择器

    网上找过很多的移动端基于zepto或jquery的日期选择器,在实际产品中也用过一两种,觉得都不太尽如人意,后来果断选择了H5自己的日期input表单,觉得还可以,至少不用引用第三方插件了,性能也不错 ...

  6. secureCRT中文乱码问题

    #vim /etc/sysconfig/i18n将LANG="EN_US.UTF-8"改成LANG="zh_CN.UTF-8"重新登录后生效#local查看是否 ...

  7. ssh项目部署到weblogic中问题总结

    部署到weblogic还是比较费劲的 ,不过基本上问题全是由于classloader顺序的问题引起的. 首先在web-inf底下添加weblogic.xml文件如下 <?xml version= ...

  8. WPF整理-为User Control添加依赖属性

    依赖属性 ".NET properties are nothing more than syntactic sugar over set and get methods." 我们知 ...

  9. 尚德,国美 interview summary

    尚德 Q:SDWebimage源代码,cell重用.先请求出来小头像,再请求出大头像?怎么处理? SDWebImageDownloader 直接给cell设置图片会怎样 A:图片URL相同,比较nsd ...

  10. 1.Maven的安装以及本地仓库的配置

    安装: maven下载地址:http://maven.apache.org/release-notes-all.html 然后解压,配置环境变量   MAVEN_HOME,并添加到path中.验证是否 ...