例:
C语言面向过程:
打开冰箱。
存储大象。
关上冰箱。
强调的是过程(动作)。
JAVA面向对象:
冰箱打开。
冰箱存储。
冰箱关闭。
强调的是对象(实体)。
小结:
1,面向对象就是一种常见的思想。符合人们的思考习惯。
2,面向对象的出现,将复杂的问题简单化。
3,面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者。
上面是毕老师举的一个例子,就是“把大象放进冰箱”,虽然不知道这个典故从何而来,但我还是听懂了其中面向对象的思想,他是对比C语言来讲的,使人更容易理解。(这个例子堪称经典!)
而我想说的就是,JAVA面向对象的思想从某种程度来讲是从低阶到高阶的一种转变也就是把“执行者”变成了“指挥者”!(C语言面向过程,那么就意味着必须搞懂要实现功能的每一个细节,这个是相当麻烦的。所以它更偏向于底层,跟机器零件打交道,那么它就更晦涩难懂。而JAVA这一语言的出现,从某种程度上来讲弥补了像C这样底层语言的不足,不需要过多的跟机器打交道,而是更多的是跟机器的指挥者——操作系统打交道。)在JAVA中,面向对象的思想可以通过冰箱来印证。就是说现在的冰箱都是手动的,毕竟科技生产力有限,所以说我们想喝什么饮料都得自己跑到冰箱那去拿。对于科技人士来讲,这样太麻烦,造个全自动的冰箱,想喝什么饮料就告诉冰箱一声,它帮你找出来之后由你的机器人保姆再帮你拿过来。而这样这才是真正变成了“指挥者”,我们只是坐在沙发上简单的动动嘴。其实我们是在调用冰箱找饮料的方法和机器人拿饮料的方法,我们的目的只是喝饮料!真正的指挥者是“知人善用”,找“对”的对象,使用它特有的方法帮你做事情!(我这不是毫无意义的废话,而是结合实际生活体现JAVA面向对象的思想!而且我相信我不是在幻想,日后肯定会有全自动冰箱和机器人保姆!思想的转变必定促进科技的进步!)
我们日常生活中无一不是在指挥“对象”做事情。我们喝水是在调用“饮水机”“出水“的功能和“嘴”“喝水”的功能,还有“胃”“消化”的功能,而调用这一系列对象的功能,才从而使得喝水这一行为变得简单化。我们用电脑也是在调用“眼睛”“看”的功能和显示器“显示”文字的功能从而达到学习的目的。而我们作为指挥者,根本不需要了解饮水机是怎么出的水、胃是怎么消化的,以及电脑显示屏怎么就出文字了呢,我们只需要达到喝水、学习这样的目的就行了。而那些科学家工程师们则负责饮水机和显示屏的研发和制造,他们了解那些东西的原理和结构,他们需要做的是把那些产品的该有的功能封装到产品的里面,从而让使用者能正常使用。我们只要知道怎么使用就行,其他的不用咱们操心,因为咱们是指挥者!
科技来源于生活,就像JAVA面向对象的思想一样,它也是从实际的生活经验中得来的。科技是把生产生活中得来经验的封装,从而生产各种各样的工具提供给我们使用,也让我们的生活变得简单、便捷。这些工具具有各种各样的用途,从某种程度上来讲它们是封装了方法和属性的一个整体。诚然科学技术也带动了社会生产力的极大发展。其实世间万物存在都有它存在的道理,就是因为它们都有各自的内容,那是上帝赐予的,这就是JAVA面向对象的终极思想——万物皆对象!
面向对象中类与对象的关系:
- 使用计算机语言就是不断在描述现实生活中的事物。(其实它和人类语言有共同的作用,学习计算机语言是为了与计算机打交道)
- JAVA中描述事物通过类的形式来体现,类是具体事物的抽象。(世间万物都有它的归属,人类为了更方便的认知自然就把万物分类、取名,而这也是一种向上抽取的过程。)
- 对象即是该类事物实实在在存在的个体。(每个分类都有其相对应的的实体,生物的分类的话也是都有相对应的物种。)
类与对象的关系图:
- 类就是图纸。
- 汽车就是堆内存中的对象。
成员变量和局部变量的区别:
- 成员变量:
成员变量定义在类中,在整个类中都可以被访问。
成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
成员变量有默认初始化值。 - 局部变量:
局部变量只定义在局部范围内,如:函数内,语句内等。
局部变量存在于栈内存中。
作用的范围结束,变量空间会自动释放。
局部变量没有默认初始化值。
- class Car //对Car这类事物进行描述
- {
- String color = "red";
- int num = 4;
- void show()
- {
- System.out.println("color="+color+"..num="+num);
- }
- }
- class CarDemo
- {
- public static void main(String[] args)
- {
- Car c = new Car(); //建立对象
- c.color = "black"; //对对象的属性进行修改
- c.show(); //使用对象的功能。
- }
- }
class Car //对Car这类事物进行描述
{
String color = "red";
int num = 4;
void show()
{
System.out.println("color="+color+"..num="+num);
}
}
class CarDemo
{
public static void main(String[] args)
{
Car c = new Car(); //建立对象
c.color = "black"; //对对象的属性进行修改
c.show(); //使用对象的功能。
}
}
匿名对象是对象的简化形式。
匿名对象两种使用情况:
1. 当对对象方法仅进行一次调用时;(如果进行多次成员调用,那么必须给这个对象起个名字)
2. 匿名对象可以作为实际参数进行传递;