首页 > 代码库 > 从面相对象的学习过程中得出的程序开发者需要具备的类比学习能力

从面相对象的学习过程中得出的程序开发者需要具备的类比学习能力

  什么是对象?什么是类?哪些是属性?属性应该设计成什么访问权限?这个类是不是别的类的属性?这些类能不能提取出父类?这里的参数应该设置成什么?

  面向对象已经学习了一段时间了,具体使用过程中,发现原来面向对象编程需要接触这么多新鲜的概念。我先给自己打了强心剂:这些概念的提出都是为了让编程更加的方便。还好,虽然“类”这个概念对我来说有些陌生,但我很自然地,把它与我之前接触过的C语言中的结构体联系了起来。

  没错,又是C语言,Java学习的过程中,我少不了要提到我亲爱的C语言。这里我不是要讲它们具体的用法,而是要讲对于一个新概念的理解方法和学习方法。不同语言之间的相互类比,找他们之间的区别,是我快速地理解并记住新概念的方法。

  在真正地接触“类”与“对象”概念之前,语言的使用涉及到的数据类型不过就是四类八种描述数字、字符、逻辑真假的基本数据类型外加字符串和数组这俩引用数据类型,跟C语言或者说绝大部分的编程语言的基本类型不会有什么太大的区别,在这个基础上加加减减,作几个逻辑运算,弄几个分支、循环,这些说实话话都不难。因为,所有的东西都是相对具体的,没有太大的理解难度,只要你现实生活中能够描述出办事的步骤,具备简单的计算能力,可以很快的拿下。

  问题来了,更复杂的引用数据类型出来了!类,一种我们自己编写的“数据类型”,一种抽象的概念。我靠,一个数据下面还有属性?还有构造?还有方法?我靠,对于底子不扎实的朋友而言,简直头都要炸了。用用别人写好的数据类型还勉强可以,现在要自己写一个类,还要自己用,怎么办呢?

  其实,这个问题并不难。方法还是一样——类比。不说类比别的语言,就类比Java本身具有的数据类型,基本数据类型我们见过,引用数据类型也不是没有,String、数组就是很好的类比对象。去写一个类,就是一个对象不能够用我们已有的基本数据类型或者已有的引用数据类型描述它,编写一个类实际上就是把不同的属性值用各个基本数据类型来描述,类中的构造器和对象行为暂且不考虑。此时,一个类是不是就很像一个数组?数组中具有多个同类型的元素,类中具有多个同类型或不同类型的属性;数组初始化时的语法和类初始化的语法几乎一模一样,都使用了new关键字,数组是:元素数据类型[] 数组变量名 = new 元素数据类型[元素个数];类为:类名 对象变量名 = new 类名();惊人地相似!真是惊喜啊,是,我们可以自然而然的对比起来,类名 和数据类型处于同一位置,那我就把类理解为一种数据型,再来看看它的用法。数组中要调用元素是 数组名[下标],对象要调用属性是 对象名.属性名,哇塞 点操作符和方括号也及其地相似,一个用来指定元素位置,一个用来指定特定属性,下标和属性名的功能意识一样,都是为了得到特定位置上的值。这样一来就好理解的多了。

  把类当成一种特殊的数据类型,对象当成这种数据类型的变量,无论是他作为别人的属性,作为方法的参数,都可以和基本数据类型或是数组比较用法。这样类和对象的概念就从一种复杂的、抽象的概念变成了一种简单的、易于理解的概念。在这个基础上,往类中添加构造器,添加get/set方法也变得简单了不少。

  以后的学习过程中,更抽象、更复杂的概念可能还会更多。学会相互类比,找寻容易理解的学习方式,是一个程序开发者需要具备的学习能力。

从面相对象的学习过程中得出的程序开发者需要具备的类比学习能力