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

  世界是有什么组成的?在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. w3af的使用

    编解码工具 配置身份 基本身份认证 明文用base64编码 NTML认证方式,微软特有的加密方式 form表单身份认证 这样基于表单的认证就配置好了 基于cookie认证 点击后面的感叹号,它会有co ...

  2. 修改weblogic启动模式:client改为server

    1.生产模式 -> 开发模式 Step 1:将domain下的 /weblogic/domain/app_domain/bin/setDomainEnv.sh文件的PRODUCTION_MODE ...

  3. ss源码学习--从协议建立到完成一次代理请求

    上一次介绍了ss源码中各个事件处理函数完成的工作,这次具体分析一下协议的建立以及请求数据的传输过程. 因为ss的local和server共用一个类以及一系列的事件处理函数,所以看起来稍显复杂.下面来将 ...

  4. Tomcat添加管理员role

       最近朋友问我怎么在Tomcat里面使用 admin 登录,一般情况下登录后是提示xxx的,经过百度后,好不容易才找到答案:    原来添加一个role为admin:<role rolena ...

  5. thymeleaf 处理模板为字符串

    @Autowired private SpringTemplateEngine thymeleaf; public String aa() { Context context = new Contex ...

  6. xshell 5 书写汉字乱码

    使用win10安装xshell5后发现使用xshell连接虚拟机后,能识别中文但是无法输入中文了   控制面板--语言   删除除中文输入法之外的所有输入法和美式键盘 然后就可以正常输入中文了,为了英 ...

  7. df.dropna()函数和df.ix(),df.at(),df.loc()

  8. 微信小程序基础架构

    一个微信小程序界面由一个页面描述文件,一个页面逻辑文件,一个样式表文件来进行描述 在主目录中的三个以app开头的文件就是微信小程序的主描述文件 app.js :主逻辑文件,用来注册小程序 app.js ...

  9. ELK logstash 启动慢的解决方法

    最近开始测试部署ELK, 在部署logstash的时候出现一个故障: logstash在第一次安装完成以后启动正常, 但是之后启动时间越来越长, 5分钟以上甚至10多分钟.以至于怀疑程序错误, 在重装 ...

  10. AttributeError: 'WebElement' object has no attribute 'send_keys'

    这个是没问题的代码:用来打开谷歌搜索cheese并退出 from selenium import webdriver from selenium.common.exceptions import Ti ...