Rubyクラスについて
クラスの定義方法
クラスの作成
クラス名は必ず大文字で始める必要があります。
class クラス名
クラス定義
end
コンストラクタ
initializeメソッドを使用します。
なお、Ruby には、他の言語でいうところのデストラクタはありません。
def initalize(path="/bin/local")
@default_path = path
end
アクセスメソッド
インスタンス変数に対して直接アクセス(代入または参照)する場合に利用します。
定義 | 説明 |
---|---|
attr_reader :val | 参照のみ可能 |
attr_writer :val | 変更のみ可能 |
attr_accessor :val | 参照と変更が可能 |
メソッドのアクセス権
インスタンスメソッドのアクセス制限は以下の3種類です。
定義 | 説明 | public | メソッドをインスタンスメソッドとして公開します。 |
---|---|
private | クラス内部でのみ使用でき、外部非公開とします。 |
protected | 同一クラスからはインスタンスメソッドとして呼び出せますが、それ以外の呼び出しを禁止します。 |
クラス関連変数
インスタンス変数について
「@」で始まる変数をインスタンス変数といいます。
インスタンス変数はクラスから作成されたオブジェクト毎に異なる値を格納できます。
クラス変数
クラス変数はクラスから作成された全てのオブジェクトで共有される変数となります。
クラス変数の変数名は「@@」で始まります。
クラス変数は、他言語では、静的プロパティ、静的メンバ変数、スタティック変数などとも呼びます。
クラス関連メソッド
インスタンスメソッド
クラス内に記述されたメソッドはクラスから作成されたインスタンス(オブジェクト)しか呼び出すことが出来ません。
このようなメソッドをインスタンスメソッドと呼びます。
クラスメソッド(静的メソッド)
インスタンス(オブジェクト)に対する操作ではなくて、クラスそのものに対する操作を行うメソッドとなります。
クラスメソッドは主にインスタンスの内容に依存しない処理を記述するのに用いられ、オブジェクトを生成しなくても呼び出すことができます。
クラスメソッドは以下3通りの定義方法があります。
class クラス名
def クラス名.メソッド名
#処理
end
def self.メソッド名
#処理
end
end
class クラス名
def メソッド名
#処理
end
end
継承と拡張
クラスの継承
既存クラスは変更せずに、新しい機能を追加して新しいクラスを作成します。
class クラス名 < スーパークラス名
クラス定義
end
クラスの拡張
すでに定義されているクラスにメソッドを追加することができます。
class 既存のクラス名
def メソッド名
メソッド処理
end
end
関連ページ
- Ruby
- Ruby_よく使うのに忘れてしまう基本文法の備忘録
- Rubyのクラスについて
- Rubyのモジュールについて
- Rubyの例外処理について
- RubyのKCODEについて
- Rubyの__send__について
- Rubyのyieldについて