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が呼ばれました"