ume

Ruby 復習

目次

  1. class文
  2. initializeメソッド
  3. 組み込みクラスの継承の関係
  4. アクセスメソッド
  5. 特別な変数self

クラス文

class クラス名 クラスの定義 End

注意 クラス名は必ず大文字で始めないとあかん

initializeメソッド

Class文の中で定義されたメソッドをそのクラスのインスタンスメソッドという。initializeメソッドは特殊でnewメソッドが使われるとかならずinitializeメソッドが呼ばれる。イメージとしてnewがinitializeに置き換わるイメージ。

例 

def initialize(name) ⇦イニシャライズメソッド
@name = name 
end 



def naruto ⇦インスタンスメソッド
put ”私の名前は#{name}です”
end 

def sasuke ←インスタンスメソッド
put ”私の名前は#{name}です”
end 

anime= Anime.new(“ナルト”)
anime.naruto //私の名前はナルトです


anime= Anime.new(“サスケ”)
anime.naruto //私の名前はサスケです

アクセスメソッド

インスタンス変数をオブジェクト外部から参照したりインスタンス変数を変更したりするためのメソッド インスタンス変数=initializeメソッドで出てきた@nameのことをインスタンス変数という。 インスタンス変数はオブジェクト外部から参照できない、変更できないとは?

class Anime

def initialize(name) ⇦イニシャライズメソッド
@name = name 
end 

anime= Anime.new(“サスケ”) 
anime.@name  // NG 参照できない
anime.@name = “サクラ” // NG  @nameの中身を変更できない

そこでアクセスメソッドを使う ⇨ attr_reader :変数名 参照が可能(別名ゲッター) attr_writer :変数名 更新が可能(別名セッター) attr_accessor :変数名 参照と更新が可能(アクセサ) どこに記載する? ⇨クラス名の下

class Anime

attr_reader :name 

def initialize(name) ⇦イニシャライズメソッド
@name = name 
end 

anime= Anime.new(“サスケ”) 
anime.name  // OK 参照できる サスケ

特別な変数self

self=オブジェクト self=そのメソッドを受け取っているレシーバーをさす sayhiの中でselfを使うとsayhiメソッドからメッセージが送られているレシーバー(tom)をさす

class User 
attr_accessor :name

def initialize(name)
@name = name 
end

  def sayHi
  
    puts "hi! i am #{@name}"
    puts "hi! i am #{self.name}"
    puts "hi! i am #{name}"
  end

end

tom = User.new("tom")
tom.sayHi  ⇦このレシーバー(tom)selfは指している