我相信,看到標題后的你一定很好奇,究竟什么樣的Java程序員算是在“備孕期”呢?在我看來,“備孕期”主要指那些初入Java編程的新人,他們正下足功夫準備,以求在10個月后以高薪的姿態進入一家軟件公司...
我相信,看到標題后的你一定很好奇,究竟什么樣的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() {
}
}
12345678910111213141516171819
當我們把孫悟空看成一個對象的時候,編程就變得簡單了起來;我們給他兩個屬性(生命值和魔法值),給他兩個技能(棒擊大地和叢林之舞)。假如我是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套房,那么小明就是chai二代。
再繼續說下去:小華和小華他爸都是手藝人,都特別喜歡畫畫,小華他爸是自學成才,小華應該算是繼承了他爸的好基因,屬于天才型;等小華長到20歲的時候,他覺得不能就這么一直和他爸一樣只畫風景畫,那樣他取得的成就也不會高過他爸;于是,他改畫人像畫,經過十年的努力,小華在藝術界的地位甚至超過了他爸,人稱“華·芬奇”。按程序員的邏輯思維來看,小華這個舉動可以稱作為“覆蓋(overriding)”,使子類和父類產生差異的一種方法。
小華畫呀畫呀,就這么一直畫到了40歲;小華終于感到畫畫再也滿足不了他了,他突然愛上Java編程,并立志成為一名“黑客”;于是就有了“黑客與畫家”的故事。按程序員的邏輯思維來看,小華成為“黑客”這個行為可謂特立獨行,這使得小華和他爸不再只是純粹的替代關系(is-a的關系),變成了一種相似的替代關系(他們都還是畫家,但小華同時又是一名黑客,is-like-a的關系)。
在Java中,所有的類最終的父類都是Object類,這被稱為“單根繼承”——保證了多有對象都具備了某些功能。比如說最常見的toString()方法:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
123
三、one more thing?
nothing。
沒有了,我認為一篇文章的最佳字數在2000到3000,這篇文章寫到這里已經2600多字了。所以,是時候收尾了:Java是一門面向對象的編程語言,因此,“備孕期”的Java程序員一定要學會“抽象”,把現實問題抽象為一個個立體化的對象,這樣所有的問題就會按照人的邏輯來處理,而不是計算機的邏輯。
————————————————
版權聲明:本文為CSDN博主「沉默王二」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://qingmiaogu.blog.csdn.net/article/details/83305342
來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利
蘇公網安備32010402000125
蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司
南京思必達教育科技有限公司版權所有 百度統計