1-⾯试题之谈谈你对⾯向对象的理解
⾯向对象是⼀个组织者的思维模式,⾯向过程是⼀个从执⾏者⾓度的⽅向考虑问题,⽐如我们要产⽣⼀个0-10的随机数,⾯向过程思维是需要研究具体的算法,如何⽐较均衡的产⽣随机数,⽽⾯向对象思维是考虑谁来帮我做这件事,⽐如Random类调⽤其中的⽅法就好了。所以⾯向对象思维是考虑如何选择更适合的⼯具,然后组织到⼀起⼲⼀件事情。
在我们程序世界,组织者思维⽆处不在,⽐如MVC三层架构,从我们远久的truts1到现在的SpringMVC,从Hibernate到现在的Mybatis,充分的体现了组织者的思维,把优秀合适的框架组织起来给我们办事!
⽽⾯向对象最主要的的有三⼤特性:封装,继承,多态。
mvc的三层架构
封装从狭义上来说就是属性私有化,对外提供get/set⽅法使⽤。从⼴义上来说,我们⽤的C3P0,德鲁伊连接池,⽤的SSM框架他也是封装了内部的实现,对外提供给我们使⽤,这也是⼀种封装。
继承的话,继承关系可以拥有⽗类的⾮私有的属性和⽅法。使⽤继承很多时候是为了提⾼代码的复⽤性,开发中我们会把⼀些共⽤性的东西抽取出来写到⽗类中,⼦类只需对特殊的功能进⾏⼀个额外的实现。
最后是多态,多态是⽗类引⽤指向⼦类对象,指向不同的⼦类对象有不同的表现。在程序中我们会有⼀个接⼝,接⼝背后可能有不同的实现,所以会对我们的程序会有⼀个解耦性。