この章ではアクセス装飾子について説明します。
アクセス装飾子とはメソッドに対してのアクセスを制御するための装飾子です。
Rubyのアクセス装飾子はpublic、protected、private があります。
privateは子クラスのメソッドから親クラスのprivateのメソッドを呼び出すことが可能です。
publicはどこからでも使うことができます。
いままでメソッドにはアクセス装飾子を付けていませんでしたが、アクセス装飾子を付けないとpublicに指定したのと同じ意味になります。
publicが付いたメソッドはどこからでも使うことができるので、子クラスからでも親クラスのメソッドにアクセスできます。
protectedはメソッドを子クラスの中から使えます。
それと自身のクラスの中ではインスタンスメソッドとして使えます。
アクセス装飾子の詳しい説明は例の後に行います。
では例をみてみましょう。 初めに2種類のアクセル装飾子の指定方法について説明します。
1つ目は例の通り,メソッドの上にアクセス装飾子を指定する方法です。
この方法は複数のメソッドに対しても適応可能です。
例えば以下のようにsample123メソッド、sample456メソッドに対し1つのprivateで指定することができます。 2つ目はと言う形式で指定する方法です。
この方法は個別のメソッドに設定します。 次はprivateの使い方について説明します。
①親クラスの中でprivateをメソッドに付けると親クラスや子クラスのオブジェクトからそのメソッドを呼び出すこはできません。 ②子クラスのメソッドから親クラスのprivateのメソッドを呼び出すことが可能です。
クラスの中のメソッドからのみprivateのメソッドは実行できます。 〇同じクラス内のメソッドからprivateのメソッドを呼び出すことは出来ます。
次はprotectedについて説明します。
では例をみてみましょう。 ① 子クラスのメソッドから親クラスのprotectedのメソッドを呼び出すことが可能です。 また、privateでは出来ませんが、のようにオブジェクト自身を子クラスのメソッドに送って、そこからprotected指定のメソッドを呼び出すことが出来ます。
つまり、はオブジェクトのを引数にしてという形態でprotected指定のsampleメソッドを呼び出します。
結果は以下の通りです。
②以下のように子クラスのメソッドから直接、親クラスのprotectedメソッドに接続できません。
③以下の通り、同じクラス内のメソッドからprotectedのメソッドを呼び出すことは出来ます。
showメソッド内でprotectedのkeisanメソッドを呼び出しています。 以上でprivateとprotectedの説明は終わりにしますが、この他にpublicがありますが、この装飾子はどこからでもアクセスできる装飾子で、あえてと宣言しなくても、何も付けていなければそのメソッドはpublicを意味します。
カテゴリー