用費曼學習法教小姐姐學習Java面向對象

前言

大家好我是node哥哥,一個被Bug耽誤了才藝的屌絲青年,這篇文章想跟大家聊聊Java的學習方法。

故事鍥子

話說這天,我在路上遇到3個人,巧了,都在書店門口排隊買最近很暢銷的那本《Java從入門到如土》。我決定上去搭訕一下。

:哈嘍,三位同學,在買書呢?

三人同時翻來白眼:你瞎啊?

:(有點尷尬的撓了撓頭)是這樣的,我在搞一個小調研,我想問問你們爲什麼學習Java啊?

中年大叔:咳咳,我先來說說吧。那肯定爲了生活,我要吃飯啊,學習Java肯定是指望着這玩意兒找個好工作啊,不說像大佬們那樣月入10w吧,月入1w混個溫飽總可以的吧。開玩笑,我上有80歲老母親,下有嗷嗷待哺的奶娃娃,我一手代碼,一手抱娃容易嗎?我老婆總跟我吵架,說我加班太晚,說我週末不陪她,懷疑我外面有小三,說我錢沒掙多少頭髮掉了一半,說我…(此處省略1萬字吐槽)甚至揹着我開始在外面跟產品經理勾搭了…爲了我們的家,我只能裝作沒看見…我太難了!

說着說着,這哥們哽咽了…

我只能忙去安慰:額,好了好了,兄弟,生活很難,我懂你的辛苦!

戴耳機的小哥哥:哎哎,老哥,先別哭,我感覺沒那麼痛苦吧…我學Java完全是個人興趣呢,我從高中就開始接觸編程,到現在學會了C、C++、GO、Java、Python這些語言,感覺Java在服務器編程方面還是很優秀的,我自己的博客網站就是用Java搭的,哈哈,很方便也很穩定呢,現在日訪問量已經破千了哦…

:哇,小哥,你好優秀啊,能不能帶帶我…

小哥:emmm…

踩滑板的小姐姐🍉:其實我是計算機專業的,我對開發語言不怎麼會,也不怎麼感冒,但是老師佈置了作業,用Java做一個學生課程管理系統,這可難倒我了,我不會啊…我只能厚着臉皮去隔壁學校找學長指導指導我,話說學長真的很棒耶,聲音好聽,人也非常耐心,關鍵長得超帥的,哇…好喜歡!我以後的男朋友必須是學長這樣的!

:呃…這位小姐姐,咱們是不是有點跑題了…

小姐姐🍉:(翻了個白眼)懶得理你,一看你就是屌絲

:好吧,那話說回來,各位都要學Java,那怎麼學好Java?

大叔:(用T恤擦了擦眼角的淚痕)我覺得吧,是這樣,我學Java不圖學什麼原理,什麼設計模式,什麼底層算法數據結構,我只求能儘快學會,讓我能找個工資更高的工作。現在的產品經理天天吊我,搞我,動不動給我提需求,還上綱上線的,給我倒排時間,5天的開發量2天做完,還得兼職測試、運維,累死累活的上線了,出BUG鍋都是我揹着,我太難了…說完又哽咽了…

我只好慌忙再安慰大叔…

小哥哥:我感覺吧,Java是一門面向對象的語言,需要有面向對象的思維,Java裏的對象完全可以映射我們的現實世界。一輛車就是一個實體類,我們叫Class Car,車有很多的屬性,比如顏色、價格、長、寬、高、品牌等等,這些就構成了車的一個基類,用Java語言描述出來。然後我們通過 new Car() 的方式創建這個類的一個個對象,再去設置屬性,比如顏色設置成白色、紅色、綠色等等,這樣每個對象就非常獨立了。

我:嗯,說的有道理,小哥果然厲害。通過剛纔小哥的描述,我總結了下小哥哥的學習方法。就好比我是一個小白,我想學習Java的面向對象,但是我不理解,那麼我就從身邊出發,先了解我們所處的世界中的元素,然後通過我們的世界去對照Java,理解Java裏的類和對象,比如一個人就是一個對象 Person,然後人可以吃東西,就是 person有一個eat方法,吃什麼就可以是一個參數類Food傳遞進來,food有名稱等屬性,可以看下代碼的描述:

class Person {
	// 姓名
	private String name; 
	// 年齡
	private String age;
	// 住址
	private String address;

	
	private void eat(Food food) {
		System.out.println("吃食物:" + food.getName())
	}
}

/**
* food類
*/
class Food {
	private String name;
	...
	public String getName() {
		return this.name;
	}
}

小姐姐🍓:我好像懂了,面向對象就是把我們需要解決的問題從現實世界抽象成Java類,比如我想訂外賣,那麼就有我(顧客)和外賣兩個類,我訂外賣,就是Customer 裏面有個order方法,參數是外賣。大概是這個樣子的:

class Customer {
	// 姓名
	private String name; 
	// 年齡
	private String age;


	private void order(Waimai waimai) {
		System.out.println("我訂了外賣:" + waimai.getName())
	}
}

/**
* 外賣類
*/
class Waimai {
	// 外賣名稱
	private String name;
	// 價格
	private Double price;
	...
	public String getName() {
		return this.name;
	}
}

:哎,對對,就是這麼理解的,面向對象其實在初學者看來有點抽象,難以理解,但是我們剛纔這麼一討論,是不是概念清晰多了?

小姐姐🍒:嗯,確實懂了一點點…

我:哈哈,其實我們剛纔討論的這些呢,可以引用一個非常經典有效的學習方法,叫費曼學習法

大叔:(突然止住了哭泣)啥?什麼東東?

費曼學習法 是一種【以教爲學】的學習方式。你看剛纔小哥哥給我們講面向對象,在把我們將明白的同時他也對面向對象理解的非常深入了。這樣的一個學習方法呢能夠幫助你提高知識的吸收效率,真正理解並學會運用知識。

這個學習方法其實很簡單,就是驗證你是否真正掌握一個知識,看你能否用直白淺顯的語言把複雜深奧的問題和知識講清楚

大叔:哦,顯得很不感興趣…(繼續傷心痛苦地抽泣…)

小哥哥:這樣啊,哈哈,其實我自己沒意識到這個學習方法,我就是按照我自己的理解說出來了,嘿嘿…

:哈哈,每天一個Java小技巧,你學廢了嗎?



文末,再給大家放送一個福利。

《Effective Java》是Java程序員必看的一本書神書,號稱Java四大名著之一,但隨着Java 8,9, 10 ,甚至11的發佈,Java語言發生了很多的變化。之前的第二版有些內容已經不太適用了。

這本書第第三版的英文版已經於去年發佈,在發佈後,便有程序員開始翻譯其中文版,目前所有章節均已翻譯完成,目前已經開放閱讀及下載。

掃一掃下方我的微信二維碼,加我微信,我把資料免費發給你哦~
在這裏插入圖片描述
在這裏插入圖片描述

喜歡Java,熱衷學習的小夥伴可以加我微信: xia_qing2012,大家一起學習進步,成爲大佬!


創作不易,您的點贊和關注是對我最大的支持٩(๑❛ᴗ❛๑)۶
↓↓↓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章