也許有人聽過, Kotlin 是物件導向語言。
既然都特別提了,肯定還有其他種語言,那就是程序導向語言。
最大的差別就是因為物件導向語言有了物件的概念,所以有了三大能力:繼承(Inheritance)、封裝(Encapsulation)和多型(Polymorphism)。
繼承有何好處呢?那就是重複的定義不用再寫一遍。先在這邊區別一下名稱,被繼承的叫「父類別」,繼承人的叫「子類別」。
繼承能讓父與子保持著聯繫,當「父類別」決定增加屬性,「子類別」就會一起增加。如果不使用繼承的功能,而是用複製貼上,就必須考慮有一天定義變了,複製體卻沒有被通知的情況。
用更常見的例子比較,新設計的高中制服,會統一要求還在就讀的學生購買,而畢業生則不被通知。
封裝能讓寫好的工具只提供他人使用介面,把邏輯和結構隱藏起來,也因此,注重資訊安全的企業,比如銀行,就不會使用外人封裝的程式碼。
多型能讓共通的介面存在於不同結構的物件。比如按下鍵盤上同樣的按鍵,會因輸入法不同,輸出不同的文字。
設計好的物件可輕易重複利用、又能靈活擴充,所以受到歡迎。不過也因需要先設計好物件容器來容納資料和連結物件之間的關係,多了幫指令排隊的步驟,執行效率差於程序導向。
需要執行效率高的程式會選擇程序導向語言,比如硬體底層驅動或是加密演算,求的就是指令直接按照撰寫順序執行。