理解面向对象和它的3大特点
来源:互联网 发布:看病报销软件 编辑:程序博客网 时间:2024/05/16 15:14
面向对象是什么?你可以说出这个答案吗(相信没有正确答案)?我觉得面向对象只是软件工程中的一种工具而已。那软件工程的目的是什么?目的是编写出可靠、高效、灵活、易扩展、可复用的软件产品。既然面向对象是软件工程当中的一种工具,那我们使用面向对象的目的也应该是这些。就是说我们用面向对象的目的是编写出可靠、高效、灵活、易扩展、可复用的软件产品。我们一定要以这个目的为中心来学习和使用面向对象,不然你会失去方向。大多时候讲面向对象,多是讲面向对象本身,而不讲怎么利用面向对象去解决实际的问题,这样很容易误导初学者。再加上华丽的文字,很多人觉得只要面向对象了,什么事都可以OK了。举个例子,给你一把最好的枪,教你如何使用它,过了一段时间你对这把枪了如指掌。现在让你去打靶,结果100发子弹,一发都没有打中。咦,我不是用了最好的枪了吗?为什么一发都打不中?因为你不知道射击要领,不知道如何瞄准靶心,结果当然可想而知了。我们要OOP(Object-Oriented Programming),不要POO(Programming Object-Oriented)。
面向对象有3大特征(一般讲面向对象都会提到这三个),继承、封装、多态。按字面上理解,对我们来说是全新的概念,但只要你分析一下,就会发现这些都是我们在编程中,常常用到的概念。
封装是什么?只有在面向对象里才有封装的概念吗?不是的,只要是程序就有封装。大家常常用的变量、函数就是封装。举个例子,你写了取用户状态的函数,对调用这个函数的程序来说,取用户状态逻辑是封闭的,所以逻辑发生变化时,不会对调用的程序造成影响。变量也是封装,你定义了一个int变量,无论你给它赋什么值,对调用这个变量的程序来说,就是一个整数型类型的值。提到封装不得不提接口,因为封装是做接口的过程。接口是什么?只有用了interface这个关键字才是接口吗?词典里的解释是物体的接触面、界面。世界是由物体组成的,所以我们的生活当中到处是接口。你看到一个球,它是圆的,圆就是接口。我们的程序也都是由接口组成的,数据类型、关键字、函数、变量等等。比如说看到int这个词,你就知道它是整数型数据类型,我们可以说:int是整数型数据类型的接口。所以封装和接口不是面向对象特有的概念,只不过在面向对象里它们的范围扩大了而已。我们在网上常常能看到面向对象和面向过程之间的讨论,说哪一个好。其实,这些都是不重要的,因为用哪一个方法,都是做接口的过程。关键在于使用这些方法的程序员,看你的抽象能力怎么样了。
多态可能是我们最难理解的一个概念,polymorphism这个词,因为大家没有学习过面向对象的话,是很难碰到的。其实这个也是我们常常用到的一个概念,只不过没有给它命名而已(至少没用多态来命名它)。看下面的例子,
double a = 0,b=5,c=0;
a = 1;
c = a + b;
cout << c << endl;
a = 3.5f;
c = a + b;
cout << c endl;
//计算两个数的合
double sum(double a,double b);
int _tmain(int argc, _TCHAR* argv[])
{
double a=0,b=0;
a = 1;
b = 2;
cout << sum(a,b) << endl;
a = 1.2f;
b = 2.3f;
cout << sum(a,b) << endl;
return 0;
}
//计算两个数的合
double sum(double a,double b)
{
return a+b;
}
//处理int的计算
int sum(int a,int b);
//处理float的计算
float sum(float a,float b);
- 理解面向对象和它的3大特点
- 面向对象的三大特点对于封装的理解
- 面向对象三大特点心得理解.......
- 什么是js的面向对象,以及它的特点和怎样写构造函数
- 面向对象的三大特点
- 面向对象的三大特点
- OC面向对象的三大特点
- 面向对象的三大特点
- 面向对象的三大特点
- 面向对象的三大特点
- 面向对象的三大特点
- JAVA面向对象的三大特点
- 面向对象的三大特点
- 面向对象的三大特点
- 面向对象三大特点的理解---比喻的很形象
- java面向对象的三大特点理解—— 继承、封装、多态
- 面向对象三大特点
- 面向对象 三大特点
- 我的密码
- VS2005 制作web安装程序
- tnsping
- NET反射的简单示例
- Java 编写的记事本
- 理解面向对象和它的3大特点
- 原来,面向对象和数据库是“冤家”
- frameset 的一些使用技巧
- 程序员的怪现象
- 组策略之软件限制策略——完全教程与规则示例
- 更改MySQL数据库目录位置
- 第二课,规则详解
- 10 种可以节省时间的 Eclipse Europa 技术
- 这几天用VMWare