sample.rb
class Animal # クラス名は大文字で開始する必要がある (定数と同じ)
@@class_var = 'ANIMAL' # クラス変数 (定数と区別)
ANIMAL_CONST = 'ANIMAL CONST' # 定数
def self.class_method; puts 'class method' end # C++などのstaticメソッド
def instance_method; puts 'instance method' end
end
class Dog < Animal # Rubyでは多重継承はできない (モジュールという代替機能がある)
def initialize(name, age=1) # いわゆるコンストラクタ (Rubyではinitializeを定義)
@name = name # メンバ変数
@age = age
end
attr_accessor :name, :age # アクセサ (getterだけならattr_reader, setterだけならattr_writer)
end
class Dog # メソッド追加 (継承関係の記述は省略可能)
def instance_method2; puts 'instance method 2' end
end
Dog.class_method
p Dog::ANIMAL_CONST
dog = Dog.new('sample name')
dog.instance_method
dog.instance_method2
dog.age *= 99
p dog.age
p dog.name
出力例
$ ruby sample.rb
class method
"ANIMAL CONST"
instance method
instance method 2
99
"sample name"