学习java的灵魂:谈谈你对java面试对象的理解!
当面试时,你被问到了这个问题,你要知道面试官其实要问的是封装,继承,多态的思想,你要逐步引申出这三个概念!
首先,面向对象最早的思想其实是面向过程,慢慢演变成面向对象的。大概举个例子就是经典的把大象装进冰箱需要几步?
- 打开冰箱
- 把大象放进去,存储
- 关闭冰箱
我们对整个功能的实现就是对这三个动作的实现,更注重的是整个过程我们如何去操作,这就是面向过程的一个思想。
那换个角度看,我们在面向过程时每一步我们都是一个执行者,都要亲事亲为,如何才能转换角色让功能的实现更有效率呢。面向对象的思想就出现了。
我们发现我们整个过程操作的都是这个冰箱,而冰箱能实现这三个动作,那我们就可以当作这三个动作是冰箱这一事务具体实现的功能,事务是具体的,只要实例化出来就是一个对象了,我们从每个动作的执行者变成了一个事务的指挥者,这就是面向对象的思想。
我们设计这个冰箱的时候,这个冰箱是为了实现三个动作存在的,所以这三个动作就可以写成三个函数方法,把它们放进冰箱这个对象里,实际用就实际调用哪个就可以了,这就是把它特有的一些属性方法放进对象里,也就是面向对象的精髓,封装。
那继承呢,从字面角度讲,更像是生物里的遗传,比如我遗传了我爸爸的大耳朵,小眼睛,单眼皮,我继承了我爸,所以我拥有了一些我爸的属性和特征,在编程里呢,我们通过子类继承父类,也就实现了子类拥有了父类的一些属性和方法,那么每个对象也就是每个类的扩展性,可用性就高了,这就是继承。
而继承我们发现只是单一的继承,还是有局限性的,因为每个对象只能有一个父亲,我要这个对象实现更多功能的时候,它就不是那么方便,打破这个局限性可以有两个角度,一是我继承了父类的方法,如果这个方法我不满意,我可以重写这个方法,将它变成我可以实现我想要功能得方法,这就是重写,另外一个方法也可以写多次,用不用的入参来区分,这就是重载。另一个角度就是既然我们有一种方法来使一个类具有另一个类的特征,那么有没有别的方法了呢,很显然就是接口,一个类是可以实现多个接口的,也就相应实现了更多功能。
这只是多态的一方面优点和实现方法,多态就是一个对象可以实现多个状态嘛。
这就是我对java面向对象的认识!
over