封裝:public / private / protected

閱讀時間約 2 分鐘

封裝的用意

存取控制的作用。
讓某部分方法透過包裝,限制外部的取用,不讓外部使用者或程式直接取用或呼叫。
藉此希望使用者只能夠使用某些功能、某些方法。

封裝的方法

共有三種,分別為:public, private, protected.

這三種方法的說明如下:

  • public: 完全公開的方法,內外皆可存取。
class Company
  def finance  #public狀態的方法
  end
end

  • private: 對外限制,不能有特定的receiver,故僅能在類別方法裡使用,且不能有receiver。
class Company
def finance
    money #成功
    self.money #失敗
  end

private #對外限制的私人方法
def money
end
end

Mike = Company.new
Mike.finance
Mike.money #失敗
money #失敗
Mike.send (:money) #成功  #在Mike物件上呼叫send公開方法,對Mike send money訊息
而private以下的方法皆會變成private狀態,直到遇見public。
class Company
  private
  def money
  end
  def documents
  end
  public
  def staff
  end
end
所以一般大眾寫法是先將public的方法寫在前面,後面再使用private設定其他成私人的方法。
class Company
def staff
  end
  def marketing
  end
  private
  def money
  end
  def documents
  end
end

  • protected : 對外有限制,不能有receiver,但在class裡面則可有receiver也可以沒有receiver。
class Company
  def finance
  money #成功
  self.money #成功
  end
  
  protected
  def money
  end 
end
Mike = Company.new
Mike.finance
Mike.money #失敗
通常protected不太會使用,如果會使用到protected,則代表其實是想使用private。
avatar-img
1會員
13內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
## 存取修飾詞詳解 在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種: 1. **Public**: 任何腳本都可以無限制地訪問 2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
Thumbnail
代理模式通過封裝原始對象來實現對該對象的控制和管理,同時不改變原始對象的行為或客戶端與該對象互動的方式,以此介入或增強對該對象的訪問和操作。
Thumbnail
進入區塊鏈/Web3的世界,首先需要擁有一個錢包或帳號。本文從重要名詞和觀念入手,介紹公鑰和私鑰的重要性,以及助記詞的作用。探討加密錢包的種類,從私鑰控制權和網路連接的角度進行分類。同時提醒了私鑰保管的重要性,以及在交易所和網路交互中的安全提醒。最後透過實際案例介紹了社交工程和釣魚的危害。
Thumbnail
先前我們談論到靜態方法就像是定義工具箱一樣,那麼抽象方法就像是共用表格的概念,例如註冊帳號時會填寫的一些基本資料,就有包含制式的表格,裡面有需填寫的欄位,例如姓名,性別等。
物件導向設計的一個重點就是封裝,這有很多層面上的意義,但基本上就是控制物件的成員變數和方法的存取權。物件導向的封裝還跟繼承機制有關,這使得有一些時候我們逼不得已必須把函式定義在類別上,這種做法使得物件的功能變得難以拆解。封裝應該是模組的職責,並不需要再給物件相同的能力。 一般的模組系統就是把相
Thumbnail
這篇文章是關於存款帳戶及疑似不法或異常交易的管理辦法。其中解釋了衍生管制帳戶的定義以及設置目的。同時提到當客戶被其他金融機構列為警示帳戶時,名下所有銀行帳戶將被列為衍生管制帳戶,並且會受到限制措斷。
Thumbnail
閉鎖性股份有限公司,是股份有限公司的特別專章,望文生義即股份可用章程限縮轉讓的自由度,而限縮的方式,需於章程之中,清楚載明,例如:需所有股東同意才能轉讓股份,或至少2/3股東同意才能轉讓...等。
Thumbnail
本文將介紹 Python 中的閉包(Closure),我們將從閉包的定義開始介紹,然後是閉包的用途,以及最後的實作範例。
## 存取修飾詞詳解 在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種: 1. **Public**: 任何腳本都可以無限制地訪問 2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
Thumbnail
代理模式通過封裝原始對象來實現對該對象的控制和管理,同時不改變原始對象的行為或客戶端與該對象互動的方式,以此介入或增強對該對象的訪問和操作。
Thumbnail
進入區塊鏈/Web3的世界,首先需要擁有一個錢包或帳號。本文從重要名詞和觀念入手,介紹公鑰和私鑰的重要性,以及助記詞的作用。探討加密錢包的種類,從私鑰控制權和網路連接的角度進行分類。同時提醒了私鑰保管的重要性,以及在交易所和網路交互中的安全提醒。最後透過實際案例介紹了社交工程和釣魚的危害。
Thumbnail
先前我們談論到靜態方法就像是定義工具箱一樣,那麼抽象方法就像是共用表格的概念,例如註冊帳號時會填寫的一些基本資料,就有包含制式的表格,裡面有需填寫的欄位,例如姓名,性別等。
物件導向設計的一個重點就是封裝,這有很多層面上的意義,但基本上就是控制物件的成員變數和方法的存取權。物件導向的封裝還跟繼承機制有關,這使得有一些時候我們逼不得已必須把函式定義在類別上,這種做法使得物件的功能變得難以拆解。封裝應該是模組的職責,並不需要再給物件相同的能力。 一般的模組系統就是把相
Thumbnail
這篇文章是關於存款帳戶及疑似不法或異常交易的管理辦法。其中解釋了衍生管制帳戶的定義以及設置目的。同時提到當客戶被其他金融機構列為警示帳戶時,名下所有銀行帳戶將被列為衍生管制帳戶,並且會受到限制措斷。
Thumbnail
閉鎖性股份有限公司,是股份有限公司的特別專章,望文生義即股份可用章程限縮轉讓的自由度,而限縮的方式,需於章程之中,清楚載明,例如:需所有股東同意才能轉讓股份,或至少2/3股東同意才能轉讓...等。
Thumbnail
本文將介紹 Python 中的閉包(Closure),我們將從閉包的定義開始介紹,然後是閉包的用途,以及最後的實作範例。