用RPG游戏模式来讨论Java中面向对象的三大特性

写在前面

作为自认为还年轻的一代,游戏这个被称为“第九艺术”的文化产品已经越发变成了现代人精神生活中的食粮。当然我们不是来讨论游戏到底对现代社会造成了多么大的影响,但是只要有游戏出没的地方,总是离不开信息科学的身影和代码编程的背景。所以这篇博客主要想借用大家熟悉的游戏为模型来讨论理解面向对象的三大特性,你会感受到看似枯燥的代码在游戏的加持下会变得有血有肉,栩栩如生。

相关

相信大多数程序开发人员都是或者曾经是游戏玩家,对游戏的理解或多或少。我们这里讨论的游戏类型在游戏中是一种源远流长的“鼻祖类”——RPG模式。RPG顾名思义角色扮演类游戏,游戏中一般玩家会操作一个拥有特殊属性和独立技能的角色来在游戏的版图中探索和冒险。说了这么大多数人还是认为我已经跑题跑到火星了。那么好,废话少说,我们引入我们的核心——面向对象

入题

首先面向对象的核心载体想必我不用卖关子了:类(class)。在许许多多的面向对象的语言中,大家无疑将类或者类似于类的东西作为承载代码的容器。在Java中,类更是一切实现和方法的主体。

那么面向对象的三大特性是什么?

封装、继承、多态

这三个主题其实都可以分成三篇文章甚至连载一年或者出三本书来大写特写,但笔者不才,是个初入Java的小菜鸟,笔下的思想和方法不够成熟,内容和技术不够高深,甚至纰漏百出。所以我在这儿只是通篇简单的讨论分析下面向对象该如何理解。我们就以三个特点三个小段来谈谈这些内容吧!

封装

首先先来谈面向对象里的封装:我们先不去理解这个概念到底是什么意思,我们再来看看我们感兴趣的游戏方面。之前提到,在RPG游戏中,玩家操作的角色是整个游戏中的视角主体,所以如果在Java中,首先要创建一个关于主角的类Role。他是整个游戏的体验入口,所以当这个类创建好后,我们再来看看,一个RPG游戏里的主角会有哪些特性:

人物属性:等级、昵称、HP/MP槽、熟练度,金钱…………
人物动作:攻击、防御、移动、对话、使用道具、学习技能…………

看到这里,其实大家已经看出这两种分类里相对应的Java类中的东西:成员变量和成员函数。一个角色就想一个类定义出来的一个实体一样,它有类中对属性和动作的所有描述的东西,我们这里的角色就是Java中最重要的实体——对象

但是问题来了,在游戏工程中,玩家会直接看到这些角色属性和角色动作在角色中的结构和运作么?不会。对于一个玩家,他们要的是执行某个点击操作或者键盘操作后直接输出的结果反馈,他们并不关心计算机如何去处理角色这个类中的具体实现过程与方法。所以面向对象编程中,开发者为了将这些复杂而庞大的过程隐藏,使用了类这种容器,就像我们使用的机器一样,用简单的外壳包装了内部复杂的电路板和机械齿轮;就像我们的手机,用简单的屏幕覆盖了下面大量的计算和通信过程;就像你送的礼物,用精美的包装纸包装了里面让人惊喜的礼物。Java类就像是一个巨大的容器或者说外壳,将里边大大小小、多多少少的成员封装在里边。使用者只会看到这个巨大的集合体呈现简洁的实体结构,不用关心他们内部的逻辑结构。

这里我们通过创建一个角色的代码来体现在具体编程中类这个容器是如何在“{}”中包装它的成员的。

class Role {                //角色类
    //成员属性,对应角色属性
    private String name;//昵称
    private ing gold;   //金钱
    private 
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值