`
qing_gee
  • 浏览: 120848 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

“备孕期”的Java程序员一定要学会抽象 | 《Java编程思想拆书》

    博客分类:
  • Java
阅读更多

我相信,看到标题后的你一定很好奇,究竟什么样的Java程序员算是在“备孕期”呢?在我看来,“备孕期”主要指那些初入Java编程的新人,他们正下足功夫准备,以求在10个月后以高薪的姿态进入一家软件公司——此时正是职业履历的开端——比如说,简历上的自我介绍是:我从2018年10月24日(程序员节)进入一家“青苗科技工作室”(我组织的一个接私活的小团队;有Web全栈、安卓等方面的项目可以私聊我哦),正式开始编写为自己带来第一桶金的Java代码…距今,我已经有8年的Java编程经验了…

 

一、什么是OOP?


学习Java的程序员第一个要了解的基础知识就是:什么是OOP?让我来举一个生动的例子,知道齐天大圣孙悟空吧?这只孙猴子就是一个对象,关键看你要把他看成是一只猴子,还是一个神仙。你知道Dota吗?在这款推塔杀人的游戏当中,就有齐天大圣孙悟空这个角色,貌似欧洲战队玩的很溜,反倒国内战队在比赛中使用的频率很低。

来看一段代码吧:

public class SunWukong {
    private Integer healthPoint;// 生命值
    private Integer magicPoint;// 魔法值
   
    /**
     * 棒击大地
     */
    private void rodHittingTheEarth() {
       
    }
   
    /**
     * 丛林之舞
     */
    private void jungleDance() {
       
    }

}

 

  

当我们把孙悟空看成一个对象的时候,编程就变得简单了起来;我们给他两个属性(生命值和魔法值),给他两个技能(棒击大地和丛林之舞)。假如我是LGD战队的357,一名聪明绝顶的好教练,主要负责赛前的BP工作和战术的研发。现在,是TI9的小组赛,LGD对阵OB的第一局。我,357在BP阶段先BAN掉了比较克制孙悟空的兽王和发条技师,然后在选人阶段(PICK)挑选了水晶室女这个冰美人来和孙悟空这个一身毛的家伙搭配。那么,在我选孙悟空的这个阶段,就等于说创建了一个孙悟空的对象,也就相当于Java中的new SunWukong()。选好了孙悟空,让谁来玩呢?自然是我们队中号称世界第一中单的maybe啊。

OOP其实并不难懂,不过就是英文单词Object-Oriented(导向的、面向的意思) Programming的首字母缩写嘛。OOP给我们一种观念,就是“万物皆对象”——我们可以尽可能的发挥想象,把现实中的物(包括动物、人物、甚至无生命的事物)抽象为一种计算机语言(比如Java)能懂的模型,那么,接下来我们让计算机来解决现实中的问题就变得简单了起来。

OOP的强大之处就在于,它使我们不必依照计算机的限制来模拟现实中的物;我们可以基于现实中要解决的问题来构建对象,使这个对象具有现实中物所具有的特征(对应Java中的属性)和行为(对应Java中的方法)。物不同,对象所具有的属性和方法就会不同。

还拿Dota中的英雄来说吧。所有的英雄都可以抽象为一个类(对象是类的实例化),这个类包含了英雄对应的成长属性(生命值、魔法值、伤害值、护甲值等等),以及对应的技能行为。那么,怎么区分每个英雄的不同呢?比如说冰美人水晶室女是一个魔法辅助类的英雄,因此,她的初始化生命值自然比敏捷类的齐天大圣低一些,但魔法值高一些;另外,他们的技能也完全不同——孙悟空拿着一根金箍棒,所以他的技能就有棒击大地;水晶室女拿着一根法杖,所以她的技能就有冰霜新星、冰封禁制等。

在我看来,OOP概念的提出,是编程界的一个重要的里程碑。它给我们以下重要的启示:

  •     万物皆对象。
  •     程序是对象相互协作的一个过程,他们通过发送消息来告知彼此要做的事情。
  •     每个对象都有自己的类型,也就是“每个对象都是某个类(class,抽象数据类型)的一个实例”。尽管每个对象都是唯一的(在内存中拥有一个唯一的地址),但具有相同状态(属性、变量)和类似行为(方法)的对象可以归属为一个类。
  •     每个对象都提供了某种服务。比如说孙悟空可以跳上树上(丛林之舞),然后再跳下来对区域内的敌人造成减速和伤害(乾坤跳跃)。


二、什么是继承?

通俗来说,可以这么来理解继承(extends)——小明他爸是个七品芝麻官,那么小明就是个管二代;小明他爸当年走过草地,越过大山,一下子步行了两万五千里(换成现在的微信运动排名,绝对天天第一),那么小明就是个哄二代;小明他爸有三亩地,拆迁后分了10套房,那么小明就是差二代。

再继续说下去:小华和小华他爸都是手艺人,都特别喜欢画画,小华他爸是自学成才,小华应该算是继承了他爸的好基因,属于天才型;等小华长到20岁的时候,他觉得不能就这么一直和他爸一样只画风景画,那样他取得的成就也不会高过他爸;于是,他改画人像画,经过十年的努力,小华在艺术界的地位甚至超过了他爸,人称“华·芬奇”。按程序员的逻辑思维来看,小华这个举动可以称作为“覆盖(overriding)”,使子类和父类产生差异的一种方法。

小华画呀画呀,就这么一直画到了40岁;小华终于感到画画再也满足不了他了,他突然爱上Java编程,并立志成为一名“黑客”;于是就有了“黑客与画家”的故事。按程序员的逻辑思维来看,小华成为“黑客”这个行为可谓特立独行,这使得小华和他爸不再只是纯粹的替代关系(is-a的关系),变成了一种相似的替代关系(他们都还是画家,但小华同时又是一名黑客,is-like-a的关系)。

在Java中,所有的类最终的父类都是Object类,这被称为“单根继承”——保证了多有对象都具备了某些功能。比如说最常见的toString()方法:

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

 


三、one more thing?

nothing。

没有了,我认为一篇文章的最佳字数在2000到3000,这篇文章写到这里已经2600多字了。所以,是时候收尾了:Java是一门面向对象的编程语言,因此,“备孕期”的Java程序员一定要学会“抽象”,把现实问题抽象为一个个立体化的对象,这样所有的问题就会按照人的逻辑来处理,而不是计算机的逻辑。



 

 

 

  • 大小: 87.2 KB
分享到:
评论

相关推荐

    Java程序员面试资料及简历模版

    Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历...

    Java程序员的推荐阅读书籍.rar

    Java编程是IT行业中广泛应用的一种高级程序设计语言,对于Java程序员来说,不断学习和提升技能是非常重要的。本压缩包“Java程序员的推荐阅读书籍.rar”提供了一份针对Java开发者的书单,旨在帮助他们拓宽知识视野,...

    2018年新版Java程序员面试宝典

    《2018年新版Java程序员面试宝典》是一本专为Java开发者设计的面试准备指南,旨在帮助求职者在2018年的面试中脱颖而出,成功获取理想的职位。这本书全面覆盖了Java语言的核心概念、高级特性以及实际开发中的常见问题...

    一周学会C# java程序员转.NET必看

    【一周学会C#——java程序员转.NET必看】 C#是一种由微软开发的面向对象的编程语言,设计用于.NET Framework上。对于从Java转到.NET平台的程序员来说,理解C#的基本概念和语法是非常重要的。以下是一些关键知识点:...

    Java程序员面试宝典

    详细分析了应聘Java程序员职位的常见考点,主要内容包括面试流程及求职准备、Java语言基础、数据类型、集合框架、图形用户界面、输入与输出、多线程、反射机制、网络编程、JDBC、Web开发基础、SSH框架(Struts、...

    java程序员转正ppt

    作为一名Java程序员,应当包括自己的教育背景、编程经验、项目经历以及对Java语言的理解。 2. **技术成长**: - **对象理解**:深入理解Java对象的创建,如String的两种初始化方式,以及内存中的变量池、堆和栈的...

    java程序员面试简历 WORD 模版

    5. **证书与培训**:如果你有Oracle Certified Professional, Java SE 8 Programmer或类似的认证,一定要在简历上突出显示。此外,参加过的Java相关培训课程也能增加你的竞争力。 6. **自我评价**:简洁地阐述你的...

    java程序员笔试题java程序员笔试题

    本资源提供了 Java 程序员笔试题,共 10 道单项选择题和 2 道多项选择题,涵盖了 Java 基础知识、编程技术、数据类型、运算符、控制流程、方法和类等方面的知识点。 1. Java 程序编译后会产生 byte code,而不是 ...

    java程序员规划java程序员职业规划.docx

    Java 程序员职业规划 Java 程序员职业规划是指 Java 程序员如何规划自己的职业生涯,使自己在职业道路上更快速、更自信地发展。本文将从 Java 程序员职业规划... Java 程序员需要学会抓住机遇,多学习新技术和新知识。

    java程序员面试交流项目经验

    java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流...

    JAVA程序员面试书籍(4本)

    对于Java程序员来说,掌握扎实的基础知识、深入理解设计模式以及熟悉并发编程是至关重要的。此外,能够在面试中展现出自己的专业素养也是求职成功的关键。本资源包含四本针对Java程序员面试的书籍,旨在帮助你全面...

    Java程序员面试笔试宝典-何昊pdf版

    根据提供的文件信息,我们可以推断出这...综上所述,《Java程序员面试笔试宝典》这本书旨在全方位地帮助Java开发者们提高自己的技术水平和面试成功率,无论是对于初学者还是有一定工作经验的专业人士都非常有参考价值。

    java程序员发展前景

    Java 程序员发展前景 Java 程序员发展前景是当前 IT 行业中最热门的话题之一。随着 IT 业的发展,java 程序员的职业前景也变得日益光明。根据最新的职业排名,软件开发专业是最热门的十大职业之一,而 java 正是...

    Java 程序员宝典 pdf 电子书

    《Java程序员宝典》是一本全面涵盖Java编程技术的电子书,旨在为初学者和有经验的Java开发者提供深入的指导。这本书详细介绍了Java语言的基础、核心特性以及高级概念,帮助读者掌握成为一名优秀Java程序员所需的技能...

    java程序员总结报告

    此外,不仅要熟练使用技术,更要理解其背后的原理,这包括但不限于Java的各种版本,如Java EE、J2ME、Java SE等,以及各种编程语言,如C#、C++等。 深入研究开源产品和框架,如Spring、Hibernate、JBoss等,可以...

    java程序员简历模板(一共19套模板)

    java程序员个人简历.doc JAVA软件工程师简历范文.docx Java软件开发工程师个人简历模板.doc 个人简历(示范案例).doc 应届生Java开发个人简历.doc 非常经典java求职简历(三套-含项目介绍).doc 高级Java工程师架构师-...

    Java程序员必看的15本书【转】

    书中包含了一系列实践性的编程建议,如使用接口而非抽象类,避免使用 finalize 方法等。 2. **《Head First Java》**:适合初学者入门,用生动有趣的方式介绍了Java的基础知识,包括面向对象编程概念、多线程和集合...

    java程序员的成长历程

    对于想要踏入或正在走在这条道路上的Java程序员来说,理解并经历一个完整的学习和发展过程至关重要。以下就是一篇关于“Java程序员的成长历程”的详细解读。 首先,Java初学者通常会从学习基础语法开始,包括变量、...

Global site tag (gtag.js) - Google Analytics