7-4-2 色々なクラスのメソッドを使ってみよう

privateメソッドを呼び出すクラスを定義するプログラムを保存する

クラス定義とインスタンスからメソッドを呼び出すプログラムを以下のように記述し、ファイル名をkind_of_methods.rbで保存します。

# 色々なクラスのメソッドを使ってみよう
class KindOfClasses
  public

  def call_public_method
    p 'publicメソッドが呼ばれました'
  end

  def call_private_method
    this_is_private_mathod
  end

  private

    def this_is_private_mathod
      p 'privateメソッドが呼ばれました'
    end
end

instance = KindOfClasses.new
instance.call_public_method
instance.call_private_method

privateメソッドを呼び出すプログラムを実行する

保存したプログラムをコマンドライン上で実行します。実行結果に"publicメソッドが呼ばれました""privateメソッドが呼ばれました"という文字列が表示されます。

$ ruby -Ku kind_of_methods.rb # Windowsの場合-Kuオプション必須
"publicメソッドが呼ばれました"
"privateメソッドが呼ばれました"

privateメソッドをインスタンスから呼び出すようにプログラムを修正する

先ほどのプログラムを以下のように修正します。

# 色々なクラスのメソッドを使ってみよう
class KindOfClasses
  public

  def call_public_method
    p 'publicメソッドが呼ばれました'
  end

  def call_private_method
    this_is_private_mathod
  end

  private

    def this_is_private_mathod
      p 'privateメソッドが呼ばれました'
    end
end

instance = KindOfClasses.new

# privateメソッドをインスタンスから呼び出す
instance.this_is_private_mathod

privateメソッドをインスタンスから呼び出すプログラムを実行する

修正したプログラムをコマンドライン上で実行します。実行結果にprivateメソッドが外部から呼ばれたことを示すNoMethodErrorが表示されます。

$ ruby -Ku kind_of_methods.rb # Windowsの場合-Kuオプション必須
kind_of_methods.rb:21:in `<main>': private method `this_is_private_mathod' called for #<KindOfClasses:0x007f895d824e50> (NoMethodError)

クラスメソッドを呼び出すプログラムを保存する

以下のようなプログラムを記述し、ファイル名をclass_methods.rbで保存します。

# 色々なクラスのメソッドを使ってみよう
class ClassMethods
  def self.call_class_method
    p 'クラスメソッドが呼ばれました'
  end
end

ClassMethods.call_class_method

クラスメソッドを呼び出すプログラムを実行する

保存したプログラムをコマンドライン上で実行します。実行結果に"クラスメソッドが呼ばれました"という文字列が表示されます。

$ ruby -Ku class_methods.rb # Windowsの場合-Kuオプション必須
"クラスメソッドが呼ばれました"

クラスメソッドを複数定義するプログラムを保存する

先ほどのプログラムを以下のように修正します。

# 色々なクラスのメソッドを使ってみよう
class ClassMethods
  class << self
    def call_class_method1
      p 'クラスメソッド1が呼ばれました'
    end

    def call_class_method2
      p 'クラスメソッド2が呼ばれました'
    end
  end
end

ClassMethods.call_class_method1
ClassMethods.call_class_method2

クラスメソッドを複数定義したプログラムを実行する

修正したプログラムをコマンドライン上で実行します。実行結果に"クラスメソッド1が呼ばれました""クラスメソッド2が呼ばれました"という文字列が表示されます。

$ ruby -Ku class_methods.rb # Windowsの場合-Kuオプション必須
"クラスメソッド1が呼ばれました"
"クラスメソッド2が呼ばれました"