{category}

Ruby - アクセス制御

private

プライベート(オブジェクト指向プログラミング

意味 クラス内部からのみアクセス可能


privateとは?

privateは、クラスの内部からのみアクセス可能なメソッドや変数を定義するためのアクセス修飾子です。外部からの直接的なアクセスを防ぎ、クラスの内部実装を隠蔽することができます。

privateの具体的な使い方

privateメソッドの定義と使用例

class BankAccount
  def initialize(balance)
    @balance = balance
  end

  def deposit(amount)
    @balance += amount
    update_log("入金", amount)
    puts "#{amount}円を入金しました。残高は#{@balance}円です。"
  end

  def withdraw(amount)
    if sufficient_balance?(amount)
      @balance -= amount
      update_log("出金", amount)
      puts "#{amount}円を出金しました。残高は#{@balance}円です。"
    else
      puts "残高不足です。出金できません。"
    end
  end

  private

  def sufficient_balance?(amount)
    @balance >= amount
  end

  def update_log(type, amount)
    puts "[内部ログ] #{type}: #{amount}円"
  end
end

account = BankAccount.new(10000)
account.deposit(5000)
account.withdraw(3000)
account.withdraw(15000)
# account.sufficient_balance?(1000)  # これはエラーになります

👇出力結果

[内部ログ] 入金: 5000円
5000円を入金しました。残高は15000円です。
[内部ログ] 出金: 3000円
3000円を出金しました。残高は12000円です。
残高不足です。出金できません。

この例では、BankAccountクラスにprivateメソッド(sufficient_balance?とupdate_log)を定義しています。これらのメソッドはクラス内部でのみ使用され、外部からは直接呼び出せません。depositやwithdrawなどのpublicメソッドを通じて間接的に使用されます。

privateに関するよくある質問

Q. privateメソッドとは何ですか?
A. privateメソッドは、クラス内部でのみ呼び出せるメソッドです。外部からの直接アクセスを防ぎ、クラスの内部実装を隠蔽するために使用されます。
Q. privateメソッドを使う理由は?
A. privateメソッドは、クラスの内部実装を隠蔽し、外部からの不適切なアクセスを防ぐために使用します。これにより、クラスの内部ロジックをカプセル化し、コードの保守性と安全性を向上させることができます。
Q. privateメソッドの呼び出し方は?
A. privateメソッドは、同じクラス内の他のメソッドから呼び出すことができます。ただし、レシーバを明示的に指定せずに呼び出す必要があります。例えば、self.method_name ではなく、単に method_name として呼び出します。

privateが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Rubyのprivateやextend、ancestors、class、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

extend

モジュールをクラスに追加

種類: モジュールとMix-in

ancestors

クラスの継承関係を取得

種類: オブジェクトの性質

class

オブジェクトの設計図

種類: クラスとオブジェクト

JSON

軽量なデータ交換フォーマット

種類: データ形式

merge

ハッシュを結合する

種類: ハッシュ操作