Java入门即放弃——吐槽toy代码的害处

最近开始写Java笔记。
这并不是我第一次学习Java。其实在许多年前我就开始接触Java,但是一直没能在实际项目中得以应用。

学习Java的热情很快熄灭

最早学习Java的时候,用的教程给出的是toy代码,也就是玩具代码。

而我本人在更早更早的以前,接触的是面向过程的语言,最初是Pascal,后来是C。

Java则是面向对象,Java离了类简直没法写下去,于是不少Java教程一上来就讲类,对象,继承,多态,等等。

好了,他们是怎么介绍类的呢。他会说我们定义一个animal的类,然后变量就是name,weight,等等。那么方法呢,比如动物会吃,来一个eat()方法,动物会拉粑粑,来一个拉粑粑()方法,等等……

然后方法里面是什么内容呢,比如eat()方法吧,我们写上一句System.out.println("I am "+name," I am eating!")

然后new一个animal类型的变量,name是多少,调用eat()方法,屏幕上打出一行字”我是xxx,我在吃……“

讲完了类讲继承,说我们定义一个bird的类,然后bird也有name,weight等属性,也会吃eat()。不仅如此,bird还有更特殊的属性比如有翅膀wing,可以飞fly()。

那么我们就从animal类继承一个吧,然后再开始写bird的代码,等等。

学了一堆我一头雾水。因为并不是完全的新手小白,还是想知道用Java能具体做啥的。但是看到这些教程,给我的感觉就是不知道如何下手。总觉得离实际应用还很遥远。

当然,那时候网上的资料也没有现在这么丰富,我也没有下功夫去找更好的资料,后来也没多研究下去。并且,也有人说这些代码很好很通俗的解释了面向对象里面的复杂概念。

困惑:玩具代码到实际运用

但是这些玩具代码带给我的是一种困惑,让我完全不知道除了写这些没用的代码,在实际应用中,面向对象思想是怎样发挥作用的。所以很快放弃深入学习。

当时我以为所有人学习Java都得先通过这些toy代码理解,然后再经过漫长的道路才能运用到实际工作中,所以不久后,在我需要写代码来解决一些问题时,我就直接投奔了python的怀抱……

直到最近,因为一些契机,打算重新好好捡起来Java,看到有人推荐《Java核心技术》这本书,拜读一下,发现这本书运用了相当实际的例子来解释类的含义。

《Java核心技术》给出的超棒解释

它不跟你扯什么动物啊鸟啊,而是从分析解决问题角度这样说的:

传统的过程化程序设计,必须从顶部的main函数开始编写程序。在面向对象程序设计时没有所谓的“顶部”。对于学习OOP的初学者来说常常会感觉无从下手。答案是:首先从设计类开始,然后再往每个类中添加方法。
识别类的简单规则是在分析问题的过程中寻找名词,而方法对应着动词
例如,在订单处理系统中,有这样一些名词:

  • 商品
  • 订单
  • 送货地址
  • 付款
  • 账户
    这些名词很可能成为类Item、Order等。
    接下来,查看动词:商品被添加到订单中,订单被发送或取消,订单货款被支付。对于每一个动词如:”添加“、”发送“、”取消“以及”支付“,都要标识出主要负责完成相应动作的对象。例如,当一个新的商品添加到订单中时,那个订单对象就是被指定的对象,因为它知道如何存储商品以及如何对商品进行排序。也就是说,add应该是Order类的一个方法,而Item对象是一个参数。

180度大转弯的思路

看完这段解释,我起码明白,原来在实际应用中,是要这样思考分析问题,然后去识别类、定义类。类和方法并不是现成的,需要根据你解决问题的思路,自己抽象出来。

而其他教程给出的toy代码,却让我认为自然界、生活中已经有了一些现成概念,我需要拿Java代码,通过类、方法等等去实现它。所以我就很困惑,怎样才能用Java来做些实际事情呢?

这两种不同的解释,对于学习的人来说,整个思路是来了一个180度的大转弯的。

当然,对于写这类toy代码进行教学的人来说,他们可能只是觉得用生活中常见的事物做例子会比较生动,却未能站在入门者的角度去思考如何帮助他们尽快看到Java语言的实际用处,导致不少人(比如我)刚入门就拐弯出来了吧!

学习要注意方式方法

最近这些年,教程和各类书籍也是越来越多,所以我也会在学习的时候多挑选一下,寻找适合自己的,而不像以前那样拿起一个教程就跟着从头开始学。因此,从这个角度来说,其实当时我的学习方式也是有不对的地方,学习的时候还是不能尽信书、尽信教程的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,098评论 1 32
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,054评论 0 4
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,222评论 0 2
  • 上海下雪,朋友圈一片欢庆。 窗外在下雪,我的心里却一片温暖。 点上能静心的薰香,一个下午就在一副水彩画中度过,把日...
    钟灵毓秀_阅读 440评论 12 9
  • nrf52832 SDK中的timer使用还是很简单的,这里也没有深入.timer在app_timer.h中SDK...
    a2633063阅读 2,738评论 0 0