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

  世界是有什么组成的?在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. msf客户端渗透(六):抓包、搜索文件、破解弱口令、修改MACE时间

    嗅探抓包 查看网卡 指定网卡,因为资源有限,默认抓满50000个包如果不dump下来,就会自动销毁掉,从0开始抓. dump嗅探到的文件到本机,传递到本机的过程是结果ssl加密的 dump了两个文件 ...

  2. 【Django】ModuleNotFoundError: No module named 'books_ordersschool'

    Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x00000 ...

  3. 可视化工具Navicat的使用

    可视化工具Navicat的使用 掌握Navicat的基本使用 # PS:在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图 ...

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

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

  5. Centos 7 MariaDB Galera cluster 部署

    一.安装环境准备 1.系统: CentOS Linux release 7.4.1708 (Core) 2.hosts 10.6.32.51 openstack1 10.6.32.52 opensta ...

  6. verilog task2

    1.问题:串口的发送和接收 系统时钟50Mhz,波特率119200.系统时钟计数约2604个,才是一位数据的传输时间. 模拟接收的任务函数rx_data_task():LSB first task r ...

  7. TOJ4439微积分――曲线积分(数学,模拟)

    传送门:点我 格林公式P,Q为关于x,y的函数. 现在为了方便起见,现给出x的积分上限1,积分下限0, y的积分上限x,积分下限0. P只是关于Y的函数,Q只是关于X的函数. 输入 开始输入为测试组数 ...

  8. P3375 【模板】KMP字符串匹配

    P3375 [模板]KMP字符串匹配 https://www.luogu.org/problemnew/show/P3375 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在 ...

  9. TZOJ 2722 Matrix(树状数组区间取反单点查询)

    描述 Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the i-th row ...

  10. f5 Syslog管理

    1.本地log保存7天.可输出至syslog服务器      local traffic 对应ltm