Java面向对象

Java是一种纯面向对象的语言,理解面向对象将使我们更容易理解Java程序的结构和原理。

 

概念

面向对象中的对象其实就是口语中所说的“东西”,这个“东西”能够做一些事情,就叫做行为,除了会做一些事情以外,这个“东西”还与还与其它东西不同,它有它自己的特点,这叫属性。其实,面向对象这样一种说法感觉就像是日常生活中人们思考问题的方式在字面上高端化了而已,并不难理解。举个例子:我自己就是一个对象,我会跑会跳,这是行为,我的年龄、性别等就是我的属性

 

现实中的类与对象

Java中的类其实就是口语中的“分类”、“类别”,同一类的“东西”,即对象,往往都有一些相同的特点,即有一些属性是相同的,无论是生活中,还是在Java里,我们都是依据对象之间的相同点进行分类的。对象由许多属性和方法构成。

 

对象的属性

对象的属性是对象的特征,其实就是修饰对象的名词(如:年龄、性别等),相同类的对象有一些属性可能是相同的,但是有一些又是不同的。

 

对象的方法

对象的方法是对象的行为,即该对象能够做的事情,其实就是修饰对象的动词(如:跑、跳等),相同类中的对象具有相同的方法,但是方法的具体表现可能会随着对象的属性发生变化而变化,如:人和狗都具有跳跃这一个方法,但是跳起的高度不同。

 

具有一相同属性的对象属于同一类,例如生物学中有“胎生哺乳”这一特点的动物就是“哺乳动物”这一类的,但是同一个类当中的对象又有一些属性是不相同的,例如同属于哺乳动物的猪和羊,它们的颜色又不一样。类是一个抽象的概念,如果告诉你一个类(例如:人类),你无法知道每一个个体(即对象)的具体特征(如:身高、体重等),类只是作为一个模板(这个模板告诉别人,属于这个类的对象都有这些属性、方法,只是告诉别人这个对象有这些属性,但并不知道属性具体是多少),类最后依然要衍生出对象来落到实处。

 

Java中的类

所有Java程序都是以class类作为最小组织单位的。使用关键字class定义一个类,例如上一篇的示例程序中的:

上面程序中就定义了一个类Hello。类里面的内容用大括号括起来。我们知道:类有属性方法,一般地,我们在上半部分定义属性,下半部分定义方法,如下所示:

格式已经知道了,我们现在开写。以狗为例,狗是属于动物类,我们现在就定义一个Animal类,先用下表展示出我们的基本思路:

项目
类名动物(Animal
属性名称、年龄
方法吃、睡

先使用中文将代码思路写出:

再将自然语言翻译为计算机语言:

这里定义的类的属性部分没有问题,但是方法的定义就稍有不同了,方法的定义多种多样,这里就直接贴代码了,详细的以后再说。实际上,方法就相当于App Inventor里面的"过程",定义方法的过程就是定义过程的过程。

 

Java的对象

创建类没有别的目的,就是为创建对象作铺垫,创建对象的方法如下,使用new关键字:

如,我们上方定义的类Animal,我们可以在同一个包(src)下面再新建一个类test,在test中使用Animal类,如下是test的内容:

这样就根据Animal类创建了一个对象dog。访问(设置或获取)类中的属性的方法如下:

如,我们继续用dog对象进行举例,设置它的名字为"二哈",年龄为2。

我们可以先打印出狗的名字,如图所示:

1540950359063

从图中可以看出程序输出了“二哈”两个字。

上面讲解了对象属性的调用,现在进入方法的调用,同样采用.进行连接:

传入参数如果没有则留空,但是括号要保留,下面我们调用eat方法看一下:

运行结果如下:

1540950751826

在图中完全看不出任何“在吃饭”的字样,但是程序依然输出了“二哈在吃饭”的字样,这就是调用对象方法的结果。

 

Java中的类、对象、方法、属性与App Inventor中的对应关系:

 

在App Inventor中(以对话框组件为例),对话框类是一个模板,凡是对话框类都有文本颜色、文本大小、显示时长、背景颜色的属性和若干个显示对话框的方法。当我拖拽一个对话框出来的时候,就完成了一次实例化对象的过程,将对话框这一个类变为了实实在在的对象对话框1,这个对话框1有具体的文本颜色、文本大小等属性,我可以设置,并且知道它的属性具体是什么,同时,我也可以直接调用它里面的方法。