1.面向对象
众所周知,Java是一面向对象的语言,那么什么是面向对象呢,我刚开始学Java时,疑惑了很长很长时间,后来随着代码量的积累才慢慢懂了。
计算机语言是一种用计算机来解决现实中问题的工具。为了分析Java的面向对象,我从现实世界来观察。
(我在这里就不讨论多维宇宙的问题了啊。)
将我们的世界用照相机咔嚓一下(也就是时间暂停一下),那么现在的东西就很有趣了。因为上面的物体都是静止的。
我们可以指着上面的苹果说,这是一个苹果等等。
因此,物体,就是这个世界最基本的组成元素了。
也就是说,在静止时,物体可以表示这个世界上的一切,对吧?那么,从现实世界转换到计算机世界,于是,Object(物体的意思)就产生了,在Java中,Object代表了一切。
那么我们可以再分析,静止世界中,我们可以看到多种多样的物体,所以,又转换一下,在Java中,我们可以有不同的Object,但是这样很不好表述,于是我们定义了一个名字Class,对,Class是类的意思,也即是类型,不同的Class就是不同类型的Object。Class怎样用Java来写呢?这样的:
class Apple{ }
上面的class表示这是一个Class,接下来的表示这个Class的名字是Apple,{ }表示这个Class包含的内容范围。
OK,接着分析,同种类型的物体也可以有多个,比如苹果可以有红苹果,绿苹果,国光苹果,富士苹果等等。那么在Java中,一个Class也代表多个物体,我们怎么区分多个物体呢?我们需要操作Class(类型)下的一个物体,怎么办呢?所以出现了对象,对象是什么东西呢,对象就是操作的目标,也就是我们实际程序中需要操作的东东。好了,我现在想有一个绿苹果,怎么办呢?我们来分析一下这句话:绿苹果,它告诉我们两个东西,一个是类型为苹果,另一个是这个东东名字叫“绿苹果”,有了,写行代码吧,不过我相信你就算没有Java基础都会写了:
ApplegreeenApple;
类型 名字。
这句话的意思了在计算机出现一个名字为greeenApple的物体,用Java语言就是:创建引用,也就是创建一个名字,以后我会用这个名字操作这个对象。
但是,这个苹果还没有出现呢,所以我们需要再写一句:
greenApple=newApple();
new在java中是一个关键字,这句话的意思是在程序中出现了一个新的苹果对象,叫做greenApple。这行代码在Java中叫做实例化对象。
在实际开发中,我们会把上面的两行代码合并一下:
ApplegreenApple=new Apple();
用Java解释就是:我初始化了一个Apple对象,对象名为greenApple,即对象的初始化。
恩,好了,Object,Class,对象,一切都是那么完美,你会发现Java真是朴实啊,完全就是现实世界的翻版呢!
我们接着来分析那个静止的画面,看,上面有一个苹果,众所周知,苹果有一系列的状态,比如颜色,重量,高度等等。好的,那么怎么用Java来表示这些状态呢,Java把这些称为一个Class的属性。用代码这样写:
classApple{
String color;
Double weight;
Double height;
}
上面这些代码可能有些地方还不是很理解,不过无所谓了,你只需要知道一个Class的属性放在一个{ }作用范围中就行了。其他的以后再说。
上面有一个绿苹果,我们想要描述它,我们会说,它是一个绿色的,1kg重,10cm高的苹果。用Java呢?
因此出现了这样一行代码:
greenApple.color="green";
greenApple.weight=1;
greenApple.height=10;
相信你大概能看懂这三行代码的意思:名字叫greenApple的这个对象颜色为绿色,重量为1,高度为10。那么“.”(点)代表什么?点出现在引用后面,点表示使用引用所代表的类型Apple中的属性color。意思就是:使color为绿色。
接着,我们让时间继续流逝,暂停取消,过了一个月,绿苹果变成了红苹果,那么苹果自己颜色变了,我们会说:经过一段时间,绿苹果的颜色变成了红色。也就是说,苹果的状态改变了,那么怎么用程序来说呢?我们需要牵出一个概念来:方法,或者函数。代码如下:
classApple{
String color;
Double weight;
Double height;
//当需要时间经过一段时间时,调用这个方法
void colorChange(){
color="red";
}
}
//是什么意思?是注释的意思,具体的以后再说。
void代表方法的返回值,暂时不管这些。
colorChange为方法的名字。
()代表了方法的标记。至于为什么需要有个(),以后再说。
{ }表示这个方法的范围。
color="red";就是方法中的内容了。
(关于方法的讨论,以后我会单独讲解,现在只要不阻碍你理解主要的知识就好了。)
那么,怎么调用这个方法呢?这样:
greenApple.colorChange();
同样,对象名字,点号,方法名字,方法的标志(一对括号)。
完整的代码就是:
ApplegreenApple=new Apple();
greenApple.color="green";
greenApple.weight=1;
greenApple.height=10;
System.out.println("经过了一段时间。。。");
greenApple.colorChange();
System.out.println("苹果的颜色现在是:"+green.color);
好了,一个基本的面向对象思想已经有了,在Java中用Object来表示现实世界的物体,用Class来表示具体的不同类型的物体,用属性来表示物体的状态,用方法来表示状态的改变,对象由属性和方法组成。用“class类型 名字”来创建对象引用,用“new Class类型”来表示实例化了这个Class,用“名字=new Class类型”来表示将实例化的对象与这个名字绑定。需要调用Class中的属性和方法用点号,方法要加上方法的特殊标志“()”。好了,今天的完毕。
备注:今天只是能对Java的面向对象思想有一个了解,至于代码的写法以及原因,明天再说。所以不用深究代码。
本人申明一下:对于转载的,请申明来自“百度空间:紫色天空 http://hi.baidu.com/txtdown99 ”。谢谢!