ヤマカサのプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

プロを目指す人のためのRuby入門 その11

第7章 クラスの作成を理解する

今回からクラスの継承について学びます。

この本よりも深くオブジェクト指向について学ぶには、

を参考にするようです。

オブジェクトのクラスの確認

オブジェクトのクラスを確認します。

class Product
end

product = Product.new
p product.instance_of?(Product) # true

継承

クラスを継承を行います。

class Product
  attr_reader :name, :price

  def initialize(name, price)
    @name = name
    @price = price
  end
end

class DVD < Product
  # name, price はスーパークラスで定義されているので不要
  attr_reader :running_time

  def initialize(name, price, running_time)
    # スーパークラスにも存在している属性
    super(name, price)
    # DVD クラス独自の属性
    @running_time = running_time
  end
end

メソッドの公開レベル

Ruby のメソッドには、public, protected, private の三つの公開レベルがあります。インスタンスメソッドはデフォルトで public です。

private メソッドはクラス外から呼び出すことができません。

class User
  private

  def hello
    'Hello'
  end
end

user = User.new
p user.hello # privateメソッドなのでクラス外から呼び出せない

また、private メソッドは内部クラスからも呼び出すことができます。

感想

メソッドやクラスの公開レベルの違いは言語によって少し異なることが分かりました。