⾯向对象和基于对象的区别
⾯向对象和基于对象的区别是多态,和继承⽆关。
基于对象仅仅⽀持了抽象数据类型的功能,继承也不过体现了⼀种is-a的关系,也是抽象数据类型,只是建⽴了⼀个层次体系。但是什么是⾯向对象呢?就是根据对象的实际类型不同,可以⾃动完成不同的⾏为,⽽仅仅通过⼀致的调⽤形式。换句话说,也就是虚函数实现的多态。以上观点,在OO设计中已经得到了公认,多态的另⼀种实现⽅法是泛型。
实例化类和实例化对象“⾯向对象”和“基于对象”两个不同的概念。⾯向对象的三⼤特点(封装,继承,多态)却⼀不可,通常“基于对象”使⽤对象,但是⽆法利⽤现有的对象模板产⽣新的对象类型,继⽽产⽣新的对象,也就是说“基于对象”没有继承的特点,⽽“多态”是表⽰为⽗类类型的⼦类对象实例,没有了继承的概念也就⽆从谈论“多态”。现在的很多流⾏技术都是基于对象的,它们使⽤⼀些封装好的对象,调⽤对象的⽅法,设置对象的属性。但是它们⽆法让程序员派⽣新对象类型。他们只能使⽤现有对象的⽅法和属性。所以当你判断⼀个新的技术是否是⾯向对象的时候,通常可以使⽤后两个特性来加以判断。“⾯向对象”和“基于对象”都实现了“封装”的概念,但是⾯向对象实现了“继承和多态”,⽽“基于对象”没有实现这些,的确很饶⼝。
从事⾯向对象编程的⼈按照分⼯来说,可以分为“类库的创建者”和“类库的使⽤者”。使⽤类库的⼈并不都
是具备了⾯向对象思想的⼈,通常知道如何继承和派⽣新对象就可以使⽤类库了,然⽽我们的思维并没有真正的转过来,使⽤类库只是在形式上是⾯向对象,⽽实质上只是库函数的⼀种扩展。⾯向对象是⼀种思想,是我们考虑事情的⽅法,通常表现为我们是将问题的解决按照过程⽅式来解决呢,还是将问题抽象为⼀个对象来解决它。很多情况下,我们会不知不觉的按照过程⽅式来解决它,⽽不是考虑将要解决问题抽象为对象去解决它。
⾯向对象主要有⼏个特性,封装、继承、多态。没有封装就不能继承,没有继承就没有运⾏时的多态。基于对象并不是单独的理论,⽽是⾯向对象的初级阶段,就是只有封装。只能是把属性、⽅法放进类中,实例化对象调⽤。学习⾯向对象要从基础知识⼊⼿,学会定义类、接⼝的定义、继承。然后要深⼊细致的研究现实事物,把现实事物或是需求⽂档中的名词抽象出来⽣成类或属性,如果是主语,多半还要根据整句的描述⽣成⽅法,定义类结构。之所以叫抽象,是因为定义类成员时要忽略掉系统不需要的其它东西。慢慢你就发现原来写程序要不停的增删代码和重构。经验丰富了,就能设计出只增加代码,不修改、删除代码的类结构了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论