iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0
自我挑戰組

今晚我想來點 Ruby on Rails 系列 第 19

<Day 19>在 ruby 的世界裡“繼承”是什麼意思?

  • 分享至 

  • xImage
  •  

繼承是一個基礎的物件導向流程的功能,可以讓你建立一個類別是特殊且特別的。舉個例子:

Food -> Fruit -> Orange

這是一個類別的關係鏈,我們可以說橘子是一個水果,水果也是食物。

父層類別(也可以稱作 superclass 或 base class)

水果是橘子的父層類別,在 ruby 就會像這樣:

class Food
end

class Fruit < Food
end

class Orange < Fruit
end

每一個方法跟實體定義在食物類別裡,水果類別都可以用得到橘子也是。

“繼承”的目的到底是什麼?

你可以想像建立一個物件階層後,你自我感覺程式碼都有整理好,但其實不是這樣子,“繼承”是用於建立一個特定且專業化的類別。例如:

所有的水果都有一個顏色,重量跟名字。有些水果會有特殊的特徵是跟其他水果不一樣的,所以你建立一個新的類別”遺傳“給有這些特徵的水果並且在這個新的類別裡面增加那些特徵。

跟為你個 ruby 開發人員你知道你每天都在使用繼承嗎?
ruby 自己使用了繼承去開啟方法,例如:

puts
class
super

這是因為所有的 ruby 物件預設都會繼承 Object 這個類別,所以你可以建立一個類別像是:

class Apple
end

那他的父層類別就是 Object:

Apple.superclass
# Object

這就是因為為什麼你可以使用那些你還沒定義過的方法,因為都是繼承過來的。例如,當你呼叫 puts, ruby 會先在你的類別裡面找看看有沒有這個方法,ruby 會往他的父層找。一但找不到,他會再找一次,最後才會去找 method_missing 之後給你一個 NoMethodError 或 NameError。

例子:

class ApplicationController < ActionController::Base
end

class SessionsController < ApplicationController
end
Model:

class Comment < ApplicationRecord
  belongs_to :article
end

上一篇
<Day 18>今晚我想來點 SESSION
下一篇
<Day 20>什麼是 Yield & Yield_Self
系列文
今晚我想來點 Ruby on Rails 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言