发现很多面试官都喜欢问这个问题(我是学生),然而每次觉得自己在这个问题上都答得不尽人意。
我的回答往往是
它的设计上的特点是:继承、封装、多态;
从具象到抽象。属性变成变量,行为变成方法;
然而面试官似乎不是很满意,不知各路大神有没有相对优雅的回答?
这真的是个有趣的问题,哈哈。当然每个人都会有不同的理解,毕竟面向对象这个概念也是炒作起来的。
我的理解包括两个方面:
一个是面向对象设计;
一个是面向对象编程。
面向对象设计的核心思想是模块化,而面向对象编程的核心思想是面向接口,面向对象编程还有一个亲戚叫基于对象编程或者叫原型编程(JavaScript就是)。所以说面向对象编程一般是需要语言级别支持的,就像你上面说的封装、继承和多态什么的。
面向对象概念比较火的时候,人们常说软件复用,继承是软件复用的直接体现。但是后来人们发现,应该更多的使用组合而不是继承,接着面向接口编程就火了。
扯得有点远了,到此打住吧。