面向对象的学习也进行了一段时间,这段时间学了,类和对象;属性;方法;封装;继承;多态;接口。也算是有一些自己的理解,不愧是贴近人类思维的思想,老师讲时我常常会想到以前的一些事物和其交相印证,其中最常想到的就是曾经陪伴过我大专时光许久的游戏,英雄联盟了。我试着用英雄联盟里的一些举例来说明面向对象的理念,如果哪边理解的不对,希望有前辈可以抬我一手,评论告诉我哪边不对-.-

  世界是有什么组成的?在java中这个答案显而易见,是由对象组成的嘛,万物皆对象。然而没接触java之前呢?我眼中的世界是什么组成的?我喜欢看小说,小时候看三国水浒,长大了看网络小说。在我眼中世界就是由历史和文化组成的,由先辈传承下来的一些东西和现在人努力想做到的组成的……

  万物皆对象,所以java就生生造出个Object类出来。。所有的类一创建就会直接继承它,简直就是祖宗一级的啊!

  那么在英雄联盟里会是什么样的呢?我觉得就是先做出一个模板,它只有血量,攻击,防御……等一些小兵、野怪、英雄都有的属性。

  类由属性与方法组成,属性很好理解,就是攻击力多少,防御多少,血量多少……

  方法稍微抽象点,但说白了就是行为。英雄联盟之中,英雄走路的样子就是一种行为。

  对象,就是类的实例化。类,就是对象的抽象化。

  比如,我说那个英雄很厉害。这句话中的英雄就是类,是抽象的,每个人脑中想的都不一样;我要是说:“那个猴子很厉害”,那么只要玩过联盟的人都会知道我说的是哪一个英雄了。这里的猴子,就是对英雄这个类的实例化。是类的具体表现。

  属性就是对象静态的状态,行为就是对象动态的状态。

  方法之中,有一个比较特殊的,就是构造方法,构造方法的意义在于创建对象时对对象进行一个初始化的赋值。

  若是想造一个“剑圣”出来的话,就先造个英雄类去继承上面说的模板,再定义一个构造方法,在参数列表中定好值,这个在创建“剑圣”时就可以直接在()中进行赋值,而不用一个一个去赋值了。

  封装,就是对类中属性的一个保护,通过访问修饰符private来做到,这样这个属性就变为了私有的,然后可以定义公共的设置与取值方法,来操作属性。这样的好处在于对象不可以直接用“.”运算符直接取值,而且在set方法之中可以进行一系列的操作。

  就是防外挂呗,要是开发外挂的直接把联盟里面哪个英雄血量一改,金币什么什么的一改的,那游戏还不崩溃了。。

  继承,就是把一个类型中共有的全部抽出来,然后其他类直接去继承这个类,好处在于可以节省代码量,使程序更加结构明了。

  就比如英雄的技能吧,所有技能都会有个CD,名称……这些属性吧,范围技能的话应该都有一个范围大小的属性之类的,就可以把这些抽出来,然后每个单个技能去继承这个类,节省了代码量。

  多态,就是一个行为的不同表现形式。

  比如英雄的走路行为,每个英雄都会走路移动,虽然移动的样子都不同,但他们都有移动的行为,这时候多态就开始了。优点同继承一样。先有了继承与方法,才有多态的体现。

  接口,代表一种约定与能力。我的理解是,接口定义的功能定义越细越好,因为接口可以被实现很多个嘛。接口只是说了一件事,却并不去实现它。

  学接口时我回忆颇多,让我想起了以前和几个室友刚玩LOL时,有人先送了,然后其他几人一边喊着“你敢单杀我兄弟!?”然后一个一个去送,送完的人就看着旁边人继续送。这就是接口(抽象类)啊!先挂的人就是那个抽象,变成了一个咸鱼,喊了句“为我报仇啊!”,然后其他几人用着不同的方法去实现这个“为他报仇”的口号。已经挂了的,就也变成了喊着口号的抽象类(咸鱼),最后大家都变成了抽象类……

  接口与抽象类,我感觉上差别并不大,其实挺大的。。。我认为最主要的区别就是接口可以被实现很多个,但继承只能继承一个,很符合人类思想,一人只有一个直系的爹啊!总不能2个吧???但接口可以被实现多个,因为接口只是一种约定,一种能力,一个口号罢了,若是其他的类接了这个口号,就必须去实现这个口号,除非自己也变成了咸鱼……

  就先写这么多吧,哪边有错了以后再修改吧……(然而想这么多并无卵用,游戏貌似大部分都不是java做出来的)

Java SE学习【二】——面向对象的更多相关文章

  1. Java开发学习(二十二)----Spring事务属性、事务传播行为

    一.事务配置 上面这些属性都可以在@Transactional注解的参数上进行设置. readOnly:true只读事务,false读写事务,增删改要设为false,查询设为true. timeout ...

  2. Java开发学习(二十四)----SpringMVC设置请求映射路径

    一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...

  3. Java开发学习(二十五)----使用PostMan完成不同类型参数传递

    一.请求参数 请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数? 关于请求参数的传递与接收是和请求方 ...

  4. Java开发学习(二十六)----SpringMVC返回响应结果

    SpringMVC接收到请求和数据后,进行了一些处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户. 比如:根据用户ID查 ...

  5. Java开发学习(二十七)----SpringMVC之Rest风格解析及快速开发

    一.REST简介 REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格 当我们想表示一个网络资源的时候,可以使用两种方式: 传统风格资源描 ...

  6. Java开发学习(二十八)----拦截器(Interceptor)详细解析

    一.拦截器概念 讲解拦截器的概念之前,我们先看一张图: (1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源 (3)如 ...

  7. java基础学习总结——面向对象1

    目录 一.面向过程的思想和面向对象的思想 二.简单理解面向对象 三.面向对象的设计思想 四.对象和类的概念 五.如何抽象出一个类? 六.类(对象)之间的关系 七.Java与面向对象 八.为什么使用面向 ...

  8. Java基础学习(三)—面向对象(上)

    一.理解面向对象       面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是 ...

  9. java web 学习二(Tomcat服务器学习和使用1)

    一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...

随机推荐

  1. K-邻近算法简单例子

    from numpy import * import operator import matplotlib.pyplot as plt def creatDataset(): group = arra ...

  2. openstack(Pike 版)集群部署(二)--- Keystone 部署

    一.介绍 参照官网部署:https://docs.openstack.org/keystone/queens/install/ 继续上一博客进行部署:http://www.cnblogs.com/we ...

  3. 137. Single Number II (Bit)

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  4. goto,void,extern,sizeof分析

    goto: 程序的质量与goto出现的次数成反比,禁用 goto的副作用:破环了程序的结构化的顺序执行的过程,它有可能会跳过程序的应该执行的一些步骤. void: 修饰函数返回值和参数 c语言中没有定 ...

  5. HDU 1542 Atlantis(线段树面积并)

     描述 There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. S ...

  6. TZOJ 1221 Tempter of the Bone(回溯+剪枝)

    描述 The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked i ...

  7. java初学网站

    http://www.jfinal.com/doc http://www.w3school.com.cn/

  8. iOS耳机监听

    1 .插入耳机的时候并没有切换到耳机播放 仍然是扬声器播放 2 .当一开始手机上已经插入耳机时 ,这时候开启音频播放时 仍然是扬声器播放 因此今天主要谈的就是从这两个问题: 先来解决第一个问题:其实解 ...

  9. 民生银行十五年的数据体系建设,深入解读阿拉丁大数据生态圈、人人BI 是如何养成的?【转】

    早在今年的上半年我应邀参加了由 Smartbi 主办的一个小型数据分析交流活动,在活动现场第一次了解到了民生银行的阿拉丁项目.由于时间关系,嘉宾现场分享的内容非常有限.凭着多年对行业研究和对解决方案的 ...

  10. C盘文件过大,C盘空间莫名丢失,pagefile.sys文件

    设置显示隐藏文件和受保护的系统文件后此文件会显示pagefile.sys这个是window的页面文件,作为系统的虚拟内存使用,和你的物理内存一样大,你内存已经很大了,不用开虚拟内存了.在系统高级属性下 ...