這題乍看之下是很本科系的問題,但事實上,當你在開發的過程中其實一直用到物件導向的概念。因為你平常就是在使用這個“特性”,而沒有使用過沒有這個“特性”的語言,自然而然就把這個“特性”當作原本就有的東西了。
因此,要暸解物件導向,必須要先了解非物件導向。
Refactor 專案時,會用到物件導向的特性。如果沒有這個概念,一樣可以寫出一個app,只是寫出來的程式不會那麼“漂亮”。
你對物件導向理解的程度,以及你是如何開發專案的。
理論誰都會背,請以實作的經驗說明。
繼承,封裝,多型
當物件有相似的 property 或是 method 我可以讓子類繼承,子類就會有父類的特性。比如我想要客製化UIViewController,那麼我可以繼承UIViewController,此時我自定義的類別就會有UIViewController的特性。
此時,我自定義的UIViewController,有些property與method不想給外面的人看到,那個我可以利用 access control,讓外面的類別無法存取該property 或 method。這就是封裝。
繼承或讓子類別完全擁有父類別的特性,但是有時候我會想要覆寫原有的特性,那麼我可以overwrite,這就是多型。
不行,但是可以透過protocol的特性做到類似的效果。
這題是非常基礎的問題,但是也不容易懂。物件導向需要一定的開發經驗才會慢慢理解。