用费曼学习法教小姐姐学习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,大家一起学习进步,成为大佬!


创作不易,您的点赞和关注是对我最大的支持٩(๑❛ᴗ❛๑)۶
↓↓↓

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