{category}

Ruby - アクセス制御

protected

プロテクテッド(オブジェクト指向プログラミング

意味 クラスとサブクラス内でのみアクセス可能


protectedとは?

protectedは、クラス自身とそのサブクラス内からのみアクセス可能なメソッドや変数を定義するためのアクセス修飾子です。同じクラスの異なるインスタンス間でも呼び出すことができる特徴があります。

protectedの具体的な使い方

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

class Employee
  def initialize(name, salary)
    @name = name
    @salary = salary
  end

  def name
    @name
  end

  def <=>(other)
    salary <=> other.salary
  end

  protected

  def salary
    @salary
  end
end

class Manager < Employee
  def initialize(name, salary, bonus)
    super(name, salary)
    @bonus = bonus
  end

  def total_compensation
    salary + @bonus
  end

  def <=>(other)
    total_compensation <=> other.total_compensation
  end
end

employee1 = Employee.new("山田", 300000)
employee2 = Employee.new("鈴木", 320000)
manager = Manager.new("佐藤", 400000, 100000)

puts employee1 <=> employee2
puts manager <=> employee1
puts "マネージャーの総報酬: #{manager.total_compensation}円"
# puts employee1.salary  # これはエラーになります

👇出力結果

-1
1
マネージャーの総報酬: 500000円

この例では、Employeeクラスにprotectedメソッドsalaryを定義しています。このメソッドは同じクラスや子クラスのインスタンスからアクセスできますが、クラス外からは直接呼び出せません。<=>メソッドで従業員の給与を比較したり、Managerクラスでtotal_compensationを計算したりするのに使用されています。

protectedに関するよくある質問

Q. protectedメソッドとは何ですか?
A. protectedメソッドは、クラス自身とそのサブクラス内からのみアクセス可能なメソッドです。同じクラスの異なるインスタンス間でも呼び出すことができるという特徴があります。
Q. protectedとprivateの違いは?
A. protectedメソッドは同じクラスの他のインスタンスからアクセスできますが、privateメソッドはできません。また、protectedメソッドはサブクラスからも呼び出せますが、privateメソッドは継承されても直接呼び出すことはできません。
Q. protectedメソッドの使用例は?
A. protectedメソッドは、クラス内部での比較操作や、同じクラスの異なるインスタンス間でデータを共有する必要がある場合に使用されます。例えば、2つのオブジェクトの内部状態を比較する際に役立ちます。

protectedが学べる書籍の紹介

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

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

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」カテゴリーが追加されましました!


関連するそのほかの単語

<

クラスの継承を表す

種類: 継承

alias

メソッドの別名を定義

種類: メソッド

super

親クラスのメソッドを呼び出す

種類: 継承

Devise

認証機能を提供するGem

種類: 人気のある外部ライブラリ

ruby-prof

Rubyコードの性能分析

種類: プロファイリング