谈谈你对“面向对象”的高见?越精辟越好。字数少于50字的就不用废话了。字数超过200字的就给分。先到先得。谢谢!
------解决方案--------------------
一.面向对象:
1.何谓对象:在面向对象程序设计中,我们将问题空间中的元素以及他们在方案空间中的的表示物称作对象(object)
Alan Kay总结了smalltalk中对象的5大基本特征:
所有的东西都是对象。
程序是一大堆对象的集合,他们通过消息传递,各个对象之间知道要做些什么。
每个对象都分配有自己的存储空间,可容纳其他对象。
每个对象都有一个类型。
同一类的所有对象能接收相同的消息。
-----而所有的编程语言的最终目的是提供一种抽象方法----
2.对象的接口:我们向对象发出请求是通过它的接口定义的,对象的类型决定了它的接口形式。
3.OOP中唯一关心的: 就是接口是什么,就像汽车的发动机一样,我们不必要知道它的结构是什么,只要它能工作就行了。所有的程序是由一定的属性(数据)和行为(方法)组成的,不同的对象访问通过函数调用来完成,对象间的所有交流都是通过方法调用,通过对封装数据对象,很大程度上提高复用率。
4.对象的3个主要特征:
behavior—说明这个对象能做什么。
State—当对象施加方法时对象的反映。
Identity---与其他相似行为对象的区分标志,每一个对象有唯一的indentity, 而这3者是相互影响的。
5.面向对象中最重要的思想 就是类,类是模板是蓝图,从类中构造一个对象,即创建了一个类的实例。(类好比一个建材市场,其中有许多子类--各种各样的装饰材料,而我们装修自己的房子就要选择我们需要的材料,(为了建立我们自己的程序,我们必须选 择我们需要的类)这个比喻可以很形象的解释类是什么。
6.类之间的关系:
依赖关系:use-a A类中的一个方法操作了另一个类中的对象。
聚合关系:has-a A类中的对象包含B类的对象。
继承关系:is-a A继承了B类,此时A类不仅有了B类的方法,还加入了自己的方法。以便我们创建我们自己需要的对象。
Java中定义的每一个类都必须继承另一个类,使用关键字extends,如果一个类在定义中不现实使用关键字extends,这个类就会隐式继承Object类。Object类又叫根超类,或基类。,我们从根超类继承来的叫子类。Java中每个类都是根超类的子类。
8.接口(interface)规定了可对特定的对象发出哪些请求。
9.继承=重新使用接口:创建出一个数据类型后,当需要新建立一个数据类型去实现相同的功能,是很没有意义的一件事,此时对其克隆后,再根据情况改进实现自己的目的就是继承。
10.封装:就是把数据和行为结合在一起在一个包中,并对对象使用者隐藏数据的实现过程。Java用3个关键字来设置边界,从而进行对数据的隐藏。Public(共有)的定义任何人都可使用.private(私有)意味着除你自己,类型创建者及那个类型的内部函数成员可以访问外其他任何人使用都会产生错误。Friendly(友好)
意味在包(package)中是可以访问的。(以上过程也可叫方案隐藏)
11.引用(Handle)操控对象:
当创建一个引用时必须要对其进行初始化
例: String s=”happy”(未建立连接)
String s=new string(“happy”)与一个新的对象连接使用new 。此句建立了一个引用,并且连接引用并初始化对象 赋值字符串“happy”.
------解决方案--------------------
12.对象的创建及存在时间:数据存放的地点
1:寄存器-速度快,数量少,在cpu内部,我们对寄存器没有控制权。
2:堆栈:驻留长规内存中,堆栈指针下移建立新的内存,上移释放内存。
3:堆:常用内存池,保存对象,有极大的灵活性,java的数据就存放在此,但是要以时间及效率为代价。Java的对象建立是在程序运行时才决定。而c++是在设计时建立对象。
对象的生存时间(lifetime)java提出的垃圾收集器可以很好的发现无须再用的对象,使用GC(grabage collector)垃圾收集器。清除对象,释放内存。
为此我们就要付出一定的运行期的开销。
13.在此我们就会有这样一个印象,一个程序只是一系列对象的集合,他们的方法将其他对象作为自己的变量使用.
14.主要类型: java的主要类型有:boolean,char,byte,short,int,long,float,double,void.这些主类型的大小都不随机器的结构变化而变化,提供了java很好的可移植性.
15.字段方法:字段又叫数据成员,成员函数又叫方法,java的全部工作就是定义类,制作累得对象及发送消息.
16.一个程序只是一系列对象的集合,他们的方法将其他的对象作为自己的变量使用,而且将消息发给那些对象.
17.名字的可见性:为了使名字不重复,作者可以定义自己的库,一般用自己域名的倒写形式 如: COM.:Leeak.utility.foidles
18.static关键字:即使没有创建对象,也需要一愕能调用的方法,此时可以使用static
19.java.lang默认自动的导入每个java程序中
20.OOP中对象使对属性和方法的封装,对象具有信息的隐蔽的性质,对细节的隐藏,对象只需要知道去这样做,而不知道如何做的细节,类的方法应谨慎控制对java数据的访问,可以用get读取方法,用set修改方法.
21:pakage:Java API中每个类和接口属于一个特定的包,包实际上市对类和接口进行组织的目录结构,提供了一种软件复用机制.
22.创建可复用的类得步骤:1.定义一个public类
2.选择一个包名,并把pakage语句加到可复用的类的源码中.
3.编译这个类.
4.把可复用的类导入其他程序中即可.
23.java中提出在类定义的括号外的仅有2个语句,pakage和import.
24.软件的复用性,软件的复用性就是利用紫的已有的,定义良好的的经过仔细测试的文档清晰的可移植的易于获得的软件构件开发新的软件.
以上就是java面向对象的一些基本术语的概述,其中的有些部分可以扩展的更深,看过think in java的 朋友就会有此种感觉.此文章向对初学者阐述了面向对象的基本概念.对已是java程序员的朋友可以对他们的基本知识做以回顾.
------解决方案--------------------
我的愚见是这样的
对象就是一个事物 任何事物都是一个对象
面向对象的编程就会把事物的本身的属性以及事物的操作合并在一起 这个就成为类 类是OOP里面最主要的特点之一
面向对象并不是独立存在的 他是与面向过程进行对比之后得出来的 C语言是面向过程的
在C中 你要表述一个人(人就是一个对象) 你可以描述一个人的身高 描述他的体重 也可以 描述人可以叫 可以吃东西 这样的方法
但是在面向过程的语言中 这些身高 体重的属性 并不会和 人的吃 人的叫 这些方法合并在一起 你可以理解为C中 他们是分散的 就是没有一个集合去统筹他们
而面向对象中 这个集合就叫类
我觉得这个是最明显的区别
------解决方案--------------------