デイトラDay27 学習記録          「RubyのClass」

Classとは、メソッドなどの処理を入れる器のようなもの。
Rubyでは、メソッドは基本的にClass内で定義して使う

1、Classを作る

Classは以下のようにして、定義する。

class クラス名
  #処理
end

class Taiyaki
  def initialize(taste,price)
    @taste = taste
    @price = price 
  end
end

taiyaki = Taiyaki("anko", 100) #インスタンス生成


initializeというインスタンスメソッドは、インスタンス.new(引数)でインスタンスを生成したとき、最初に実行されるメソッドである。

2,Classの機能

・private

クラス内でしか使えないようにするprivateメソッドというものがある

class User
  def initialize(first_name, last_name)
    @first_name = first_name
    @last_name = last_name
  end
  
  def discrive
    puts fullname  #privateメソッド呼び出し
  end

  private
  def fullname  
    return "#{@first_name} #{@last_name}"
  end
end

user = User.new("John", "Smith")
user.discrive #Johm Smithと出力
user.fullname #エラー

privateメソッドを使う理由は、インスタンスから使えるメソッドは最小限のほうがいいから。

・self

selfとはクラスから生成された、インスタンス(オブジェクト)そのものを表す。selfをよく使うときは2つです。
1,インスタンス変数の参照

class User  
  def initialize(first_name, last_name)
    @first_name = first_name
    @last_name = last_name
  end

  attr_accessor :first_name,:last_name

  def fullname(first_name, last_name)
    self.first_name = first_name #「self.first_name」は@first_nameと一緒
    self.last_name = last_name   #「self.last_name」は@last_nameと一緒
  end

2,クラスメソッドを定義するとき
   def self.メソッド名とすると、クラスから使えるメソッドを定義できる

class User 
  def initialize(first_name, last_name)
    @first_name = first_name
    @last_name = last_name
  end

  def self.create(first_name,last_name)
    user = self.new(first_name,last_name)
    user 
  end
end
 
user = User.create("John", "Smith") #クラスからメソッドを呼び出し


・クラスの継承
子クラス < 親クラスで継承できる

class premium_user < user
  def メソッド名
    #追加したい処理
  end
end

継承すれば、親クラス内のメソッド、インスタンス変数を使うことができる。



この記事が気に入ったらサポートをしてみませんか?