【12日目④:Rubyのクラスの特徴やで!】改訂3版基礎Ruby on Railsを読んだで!

シェアする

  • このエントリーをはてなブックマークに追加
41AkxXsz+5L._SX258_BO1,204,203,200_

Rubyのクラスの特徴

Rubyではクラスもオブジェクト。
Rubyでは全てのObjectに1つずつ固有の番号が振られる。

class Robot
end

robo1 = Robot.new
robo2 = Robot.new
puts "Robot: #{Robot.object_id}"
puts "robo1: #{robo1.object_id}"
puts "robo2: #{robo2.object_id}"
result

Robot: 70366358380820
robo1: 70366358380760
robo2: 70366358380740

Classクラスは「クラスに関する機能を備えた」クラス。
定数RobotはRobotクラスを表すオブジェクトを指している。
Robotクラスを表すオブジェクトも何かのクラスのインスタンス。
そのクラスがClassクラス。

RobotはClassクラスのインスタンスを参照する定数なので、
普通の変数のように別の変数で参照したり、メソッドの引数にできる

klass = Robot       # 変数klassはClassオブジェクトを指す
robo = klass.new    # Robot.newと同じ
robo.kind_of?(Robot) # クラスはメソッド引数にもなれる

ココらへんもようわからんな??
→つまりクラスも(Classクラス)オブジェクトだから、引数にできたり変数に参照したり、メソッドを呼び出したりできるってこと。

クラス定義の直下にコードを書くとクラスが読み込まれるときに実行される。

class Robot
  puts "ここも実行される"
end

↑Robotクラスが読み込まれるときにputsも実行される。

クラス定義の直下、およびクラスメソッドの中では
現在のオブジェクトを表すselfはクラスオブジェクト、
つまりClassクラスのインスタンスになる。
ちなみにattr_accessor,public,privateはClassクラスのメソッド。

attr_accessorはアクセサメソッドをクラスに追加するメソッドで、
public,privateは「これから定義させるメソッドの呼び出詩制限をへんこうする」という機能のメソッド。

今日は長かったな、ここまでにしよう。

本記事は下記本の勉強記事です。初学者にとても良い本です。

スポンサーリンク
Sponsored Link
Sponsored Link

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
Sponsored Link