iOS工程师面试深入浅出- 物件导向的三大特性?

iOS工程师面试深入浅出- 物件导向的三大特性?

这题乍看之下是很本科系的问题,但事实上,当你在开发的过程中其实一直用到物件导向的概念。因为你平常就是在使用这个“特性”,而没有使用过没有这个“特性”的语言,自然而然就把这个“特性”当作原本就有的东西了。
因此,要了解物件导向,必须要先了解非物件导向。

Refactor 专案时,会用到物件导向的特性。如果没有这个概念,一样可以写出一个app,只是写出来的程序不会那麽“漂亮”。

这题是在问什麽?

你对物件导向理解的程度,以及你是如何开发专案的。

面试怎麽回答?

理论谁都会背,请以实作的经验说明。

1. 简述物件导向的三大特性

继承,封装,多型

2. 使用这些特性的情境

当物件有相似的 property 或是 method 我可以让子类继承,子类就会有父类的特性。比如我想要客制化UIViewController,那麽我可以继承UIViewController,此时我自定义的类别就会有UIViewController的特性。

此时,我自定义的UIViewController,有些property与method不想给外面的人看到,那个我可以利用 access control,让外面的类别无法存取该property 或 method。这就是封装。

继承或让子类别完全拥有父类别的特性,但是有时候我会想要覆写原有的特性,那麽我可以overwrite,这就是多型。

3.延伸问题:

swift/OC 可以多重继承吗?

不行,但是可以透过protocol的特性做到类似的效果。

总结:

这题是非常基础的问题,但是也不容易懂。物件导向需要一定的开发经验才会慢慢理解。


<<:  如何有效地绕过验证码

>>:  Scope Chain & Closure

IT铁人DAY 28-Observer 观察者模式

  今天要学习的是观察者模式,它主要的作用是设定一个订阅机制,当被订阅的物件有发生事件时就会去通知所...

D2 - 第一周 暖身周

  这周要开始学习 cli, git, 用文字指令做一些事情,但还没开始写程序。本周要突破的一道难关...

4. 关於 Constructor Function

(想直接看题目的话可以移到最後一个标题!) 在准备回答问题前,先复习几个观念: Constructo...

从 JavaScript 角度学 Python(4) - 型别与变数

前言 oh!终於要开始学习写 Python 了呢!(被揍),都混了三天,我如果再不开始写 Pytho...

树选手2号:random forest

在前面两天简单介绍了一下decision tree的原理,今天来谈谈如何把树变成一片森林~ Ramd...