一、面向对象思想概述:
1.1理论篇
在程序设计语言里,一切事物皆是对象。这既像哲学上对事物的定义,又像是数学上的归纳统计。在Java语言中,可以把事物的特征分为属性和行为。
属性可以看作为静态的。比如狗有四条腿,两个眼睛一条尾巴,狗的颜色,狗的种类。这些都是固定不变的,不会因为这条狗跑了几公里,多吃了几根骨头,腿就变成了三条,眼睛又多长了一只,狗的颜色就变了。Java语言中狗的这些固有属性可以写为成员变量。
行为可以看作是动态的。比如狗会吃东西,会犬吠,会咬人。这些非常有动态画面感的行为,在Java语言中可以写为成员方法。
知道了狗这个对象的属性(成员变量)和行为(成员方法),就可以把具体的狗抽象为狗类,便是为狗这个动物定义了一个种类模板。
1.2代码篇
public class Dogs { //成员变量(属性) String kinds;//种类 String color;//颜色 int leg;//腿 //成员方法 public void eat(){ System.out.println("吃东西"); } public void bark(){ System.out.println("犬吠"); } public void bite(){ System.out.println("咬人"); } }
二、面相对象和面向过程的区别:
面向过程:当事件比较简单的时候,利用面向过程,注重的是事件的具体的步骤/过程,注重的是过程中的具体的行为,以函数为最小单位,考虑怎么做。
面向对象:注重找“参与者”,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。
案例:
人把大象装进冰箱:
面向过程:
函数1:打开冰箱(){人站在冰箱前,打开冰箱,冰箱卡到30度角的时候,冰箱的灯打开了.........}
函数2:储存大象(){大象先迈左腿,再迈右退,考虑冰箱能不能装下......}
函数3:关闭冰箱(){人站在冰箱前,关闭冰箱,冰箱开到30度角的时候,冰箱的灯关闭了..........}
面向对象:
人{
打开(冰箱){
冰箱.打开();
}
存储(大象){
大象.进入();
}
关闭(冰箱){
冰箱.关闭();
}
}
冰箱{
打开(){ 1.2.3.}
关闭(){}
}
柜子{
}
大象{
进入(冰箱){
}
}
面向过程 ---> 面向对象 , 其实就是由执行者 ---> 指挥者的 一个过渡