iOS工程师面试深入浅出- 物件导向的三大特性?
这题乍看之下是很本科系的问题,但事实上,当你在开发的过程中其实一直用到物件导向的概念。因为你平常就是在使用这个“特性”,而没有使用过没有这个“特性”的语言,自然而然就把这个“特性”当作原本就有的东西了。
因此,要暸解物件导向,必须要先了解非物件导向。
Refactor 专案时,会用到物件导向的特性。如果没有这个概念,一样可以写出一个app,只是写出来的程式不会那么“漂亮”。
这题是在问什么?
你对物件导向理解的程度,以及你是如何开发专案的。
面试怎么回答?
理论谁都会背,请以实作的经验说明。
1. 简述物件导向的三大特性
继承,封装,多型
2. 使用这些特性的情境
当物件有相似的 property 或是 method 我可以让子类继承,子类就会有父类的特性。比如我想要客製化UIViewController,那么我可以继承UIViewController,此时我自定义的类别就会有UIViewController的特性。
此时,我自定义的UIViewController,有些property与method不想给外面的人看到,那个我可以利用 access control,让外面的类别无法存取该property 或 method。这就是封装。
继承或让子类别完全拥有父类别的特性,但是有时候我会想要覆写原有的特性,那么我可以overwrite,这就是多型。
3.延伸问题:
swift/OC 可以多重继承吗?
不行,但是可以透过protocol的特性做到类似的效果。
总结:
这题是非常基础的问题,但是也不容易懂。物件导向需要一定的开发经验才会慢慢理解。