前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java漫谈3

Java漫谈3

作者头像
用户1335799
发布2018-03-12 10:55:02
6300
发布2018-03-12 10:55:02
举报

上次我们说道Java中的Hello World(以下简称HW)是什么样子的,还写了一段HW的输出程序。不知道你是否会有疑问,难道在Java的环境中只要输入这一句话就能输出HW么。那如果初始的程序如此地简单,第一章的时候又为什么非要谈什么继承、封装、多态,只接谈这个程序不就能更加自然而然地切入么。

对,你猜对了。

事实上,即便你在命令行里面输入HW的代码,在windows下,命令行会提示说这不是内外部命令。而在IDE中点击运行倒是能直接看到结果,不过这是因为IDE已经引导我们把一些事情做好了。IDE也就是专门用来编译Java代码的一款软件中,你可以把它想象成Java程序的制作车间。

目前开发Java程序还是IDE用的比较多,所以在漫谈中默认的就是在IDE中开发的情况。

那这个所谓的Java车间在运行HW那句代码之前都有哪些动作呢。一般我进入IDE之后的顺序是如下:

  1. 新建一个工程
  2. 在工程中新建类
  3. 在类中添加main方法
  4. 在main方法中添加HW语句

新建一个工程这个你肯定能理解,在 Java漫谈1的时候说Java中的类就好比是一个模版,不知道你会不会萌生出一个疑问,为什么要直接新建一个“模版”,难道就不能建一个“方法”么?如果你是刚刚进入Java这个领域的,我的回答是——不能,原因是——没有原因,你要做的是把HW程序的功能自己实践出来,尔后在这个程序之上改动1-2个字符,这么一步步地慢慢探索下去,相较于把不懂的点搞懂,把程序实现更重要。如果你已经在这一行浸营已久,我的回答是,Java就是这么规定的,到目前为止并没有看到说人话的解释。如果非要解释的话,可能就是在Java中万物皆对象,类是对象的一种形式。类即模版,如此一来每一个写的类都可以成为另一个模版的一部分,有点儿像乐高积木,便于构件复杂的体系。

现在类有了,不过要在类中写方法。就拿人这个属性来说,你有各种属性,姓名,性别,身高等。如果我们没有方法的话,顶多算是一具蜡像,而就不能和别的人进行聊天,吹牛,说hello等动作。不过这其中有个最重要的方法就是main方法,它是一个程序的运行方法的初始放方法。也就是说,当一台计算机要运行一个程序的时候,它不是从程序的第一行开始执行的,而是会先找到这个程序的main()方法,从main方法的第一行开始执行指令。

写到这儿的时候,我脑子里突然冒出一个好玩儿的想法,如果把段誉比武的的过程用面向对象的Java语言来描述的话会是个什么样子呢。下面我就尝试一下,希望金庸老爷子不要打我…

首先,我会new一个工程,这个工程的名字叫做“武林大会”。然后,我会在这个工程里面新建一个侠客类,用来指代所有参加武林大会的人的一般属性和方法,也就是模版。这些属性有姓名,年龄,武功,等级,角色。通用的方法是出招,比武。再接着,我会new好几个侠客实例,反映在代码上的操作就是new不同的侠客实例,且这些实例都继承自侠客类。由于是继承了侠客类,所以这些实例也就天生拥有了侠客类的属性和方法,于是下一步就是根据不同的角色给这些属性和方法赋予不同的值。就拿段誉和慕容复来说,大概会向下面这个样子:

姓名

段誉

慕容复

年龄

26

28

性别

武功

凌波微步

斗转星移

等级

一流

一流巅峰

角色

参赛选手

参赛选手

而段誉的出招()是返回凌波微步以及凌波微步的伤害值,这里是90。慕容复的出招()则是返回斗转星系以及斗转的伤害值100。之所以要有返回值,是因为比武这个动作抽象来看,就是比较双方出招之后的伤害值的大小,这里先不考虑生命值和伤害值的复合关系,仅仅是谁的伤害值大,谁就赢了。

此外,由于每个实例之所以与别的实例不同,是因为有自己特殊的属性或者方法,在这里,我觉得慕容复还有一个追杀()方法,而相应的段誉有一个逃跑()方法。因为在《天龙八部》的前期,段誉见着慕容复还是要跑的。

最后我们再新建一个类,叫做比武类。为了方便逻辑理解,我们就把main函数放在这个类里面,也就是说程序一启动之后就让他们比武。下面就构造比武的函数就行了。构造这个方法之前,我们需要现将这个比武的过程抽象一下,可以抽象成:找一个对手,相互“出招”,如果我的伤害值不敌对方我就输了,如果比对方强我就胜利,所以大概的方法的样子如下:

比武(侠者1,侠者2){ int 结果 = 侠者1.出招() - 侠者2.出招();//侠者1.出招 VS 侠者2.出招 if(结果>0){ return 侠者1赢了; }else{ return 侠者2赢了;

而main函数里面的执行语句也就是比较清楚了,首先调用

比武()方法,发现慕容复赢了,则慕容复会调用追杀(),而段誉一旦发现慕容复调用追杀(),他就调用逃跑()顺利逃脱,为迎娶王语嫣成功地保住了小命。

这篇文章主要分享了我对Java里面类的实例化的理解,在段誉比武的例子中又稍微谈到了一点儿抽象的的概念,希望这能对你理解Java类的实例话有些帮助,我们下回见。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 怀英的自我修炼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档