• Java SE学习【二】——面向对象


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    汇编实验程序
    javascript事件列表解说
    c#自动向网页Post信息并提取返回的信息
    C# 全半角转换
    判断 wp 是否是活跃页面
    Font Support for Windows Phone
    C# sqlite for wp7
    C#例子 易懂故事 接口 委托 事件 异步通知 好玩.
    C#用事件模式实现通知 from: http://www.cnblogs.com/guilin_gavin/archive/2011/08/18/2144397.html
    wp7 webclient 的 post 方式获取数据
  • 原文地址:https://www.cnblogs.com/weixin-tt/p/8505929.html
Copyright © 2020-2023  润新知