对象引论

专栏目的:

传统的学习方式都是罗列知识点,达到全面学习的目的。但是这样的缺陷就是不能很深刻理解这些知识。所以我们得学习的观念应该不仅仅是全面性,还有就是明天它是从那里来,解决了什么问题,并且学习处理这些问题的新的思维方式。总体来说就是全面,根源,场景,新思维。

章节解读思路:

首先学习一定要系统,所以我先做了一个思维导图去整体把握。然后是具体分析每个点,分析他们之间的联系。主要是要知道这个知识点在解决什么问题,它的思路是怎么样的,看待问题的方式是怎么样的。对于一些很容易的知识点就没有详细探讨了。

整个章节的知识点的整理(全面):

图片描述

具体章节思考(根源,场景,新思维):

脉络

整个章节的脉络其实很清晰,就是首先谈论的就是面向对象的思维,然后就是java怎么去实现的。

面向对象

我们思考一个问题?计算机在帮助我们人类解决问题。但是计算机解决问题的方式需要计算机能读懂的方式。这样就有了机器模型和具体问题模型之间转换的问题。那么我们学习的这么的语言就在充当这种将具体问题模型转换为机器模型的桥梁。基于对比我们很清楚,像c语言是面向过程的语言,这种语言更加的偏向机器,更加讨好计算机,这样的缺陷就是开发者转换模型比较麻烦。但是面向对象语言就将这种缺陷解决了。我们将程序当作很多的对象的集合,整个程序的运作都是在发送消息然后进行操作。这样程序就像我们很多人类在协同合作,有了属性和行为。这样我们去开发的时候就很像自己在操作一样,思考上去更加方便。总体来说语言就是在转换机器模型和具体问题模型的桥梁,面向对象语言更加偏向我们人类的思考方式的桥梁。

面向接口

我们虽然将一切东西都当作是对象,但是去解决具体问题更多的在于去对象去执行某一个操作。所以我们去写程序的角度不仅仅是我们需要怎么去抽象一切事物为一个class,同时我们需要知道我们需要这个对象去做什么。可以说抽象事物是面向对象编程的基础,而面向接口就是将一切对象运作起来去解决问题。这里面新颖的思维就是面向接口编程。

隐藏具体实现

我们将一切抽象为对象之后,那么其中一些是可以共用的,所以就有了类库。在这里我们可以将程序员分为两种,一个是类创建者,一个就是类使用者。一个类里面肯定有些信息是很重要的,修改一些内容将对该类的改变很大。但是对于类使用者来说其实并不重要。那么这个时候我们只将类使用者需要的东西暴露给他,而将很敏感的关键处给隐藏,这样的设计将会更加安全,更加的健壮。所以隐藏具体实现其实更多的是为了解决安全性的问题,当然也有权限的问题。

复用代码

我之前谈到共用的问题,其实这里面也有复用。那么我们说到复用其实我们很容易想到,继承。但是复用代码是不是只有继承呢?不是,其实还有一种我们经常会用,叫做组合。简单的将就是在同一个类里面将另外一个类当作一个属性。我觉得这种考虑,打开了对于复用代码的这种理解,值得记录。

向上转型

我们在写程序的时候会尽量想写一些没有继承的类,因为这样比较干净,不会受父类的影响。我们更想要当作基类,这样更少依赖特定类型。接口就实现了这个功能。比如三角形和圆形都有计算面积的行为。我们可以写一个几何图形的接口,然后三角形和圆形去实现就好了。但是我们执行程序的时候就不知道执行的是三角形还是圆形,那么java在这里就做了处理。这样的好处就是对于我们之前写好的代码如果需要修改实现方式,不会影响该接口的使用。这也是向上转型的魅力所在。

向下转型和范型

有了向上转型,肯定就有向下转型。那么什么是向下转型呢。就是我们将一个对象A存储到一个普通数组,这个时候存储进取的是object,而不是A。然后我们需要将A取出来,这个时候取的是object的引用,但是A里面的方法就被隐藏了。所以我们需要将取出来的object强制转换为A。那么对于我处处了A和B,那么我们怎么知道取出来的是A或者B呢。所以这个时候就需要范型去限定存储的对象是怎么类型,当我们向下转型的时候就不会出错了。

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