面向过程和面向对象是编程语言中重要的编程思想,其中面向过程中的语言有C语言、Fortrant语言等,面向对象的语言有C++、Java、Python等。
一.面向过程和面向对象的概念
面向过程:问题被分解成一系列需要完成的任务,而这些任务由构建的函数完成,程序通过调用这些函数来解决问题。面向过程采用自顶向下的思想,以事物为中心,主要关注怎么做的问题。
面向对象:问题被分解成一系列对象,描述具有某种属性的某些事物在解决问题的步骤中的行为。面向对象以对象为基础,主要关注谁去做的问题。
比如春晚那个比较著名的“大象装进冰箱分几步”就是面向过程:
第一步:打开冰箱门; 第二步:把大象装进去; 第三步:关上冰箱门。
通过构建函数来实现每一步的操作,然后通过main函数调用这些函数就可以实现这些任务。
如果这个问题用面向对象来解决的话,需要构建大象、冰箱和一个测试类。其中大象的行为有进去,冰箱的行为有开门、关门。测试类中调用大象类和冰箱类中的方法就可以完成问题的解决。
//面向过程
void main(){
openDoor(); //打开冰箱门
elephentIn(); //把大象装进去
closeDoor(); //关闭冰箱门
}
//面向对象
class elephent{
public static void in(){
"enter the fridge";
}
}
class fridge{
public staic void openDoor(){
"open the door";
}
public static void closeDoor(){
"close the door";
}
}
class Test{
public static void main(String[] args){
fridge.openDoor();
elephent.in();
fridge.closeDoor();
}
}
二.面向对象的三个特征
1.封装
封装是一种信息隐蔽技术,利用抽象数据类型把数据和基于数据的操作封装在一起,用户只能看到对象的封装界面信息,将对象的使用者和设计者分开,不必知道行为实现的具体细节。
2.继承
继承是一种基于已有的类产生新的类的机制,指新的类可以获得已有类的属性和行为。新类是已有类的子类,已有类是新类的父类或超类。在继承过程中,子类继承了超类的特性,包括方法和实例变量,可以修改继承的方法或增加新的方法。
继承包括单继承和多继承。单继承是指一个子类仅有单一的直接超类;多继承是指一个子类中可以有一个以上的直接超类。Java中仅支持单继承。
3.多态
多态是指允许超类和他的子类的对象们响应同名的消息,两者的响应方式可以不同。实现多态有覆盖和重载两种方式,前者通过子类重新定义父类中的虚函数,后者通过改变方法中的参数列表而不改变方法名来实现。