フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援
フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援

PHPとRubyを比較してクラスついて理解する_100DaysOfCodeチャレンジ25日目(Day_25:#100DaysOfCode)

はじめに

この記事はTwitterで人気のハッシュタグ#100DaysOfCodeをつけて、
100日間プログラミング学習を続けるチャレンジに挑戦した25日目の記録です。

動作環境

  • PHP 7.1.16 (cli)
  • Ruby 2.4.1p111 (2017-03-22 revision 58053)

本日学んだこと

  • selfとクラスメソッド

selfとクラスメソッドについて

クラスの中でselfを使うことで、文字通り自分自身を表すことができます。

また、selfはクラスメソッドを定義するときにも使われます。

クラスメソッドとは、クラスが生成するインスタンスとは関連のないメソッドを作りたいときに定義するメソッドのこと。

PHPの場合、クラスプロパティを作成した後にゲッターによってクラスメソッドを呼びだし、Rubyではクラス名.クラスメソッドの形式で呼び出します。

以下の例では、PHPとRubyでインスタンスが生成される度に、生成されたインスタンスの数を数えるcountというクラスメソッドを実装しています。

class Animal {
  private static $count = 0;
  public function __construct($kind) {
    $this->kind = $kind;
    self::$count++;
   }
  public function getCount() {
    return self::$count; //selfはAnimalを表している
  }
}
//ここから下はクラスの外部
$penguin = new Animal('キングペンギン');
echo Animal::getCount(); //クラスメソッドの呼び出し。1が返ってくる。
class Animal

  def initialize(kind)
    @kind = kind
    if defined?(@@count) # @@countはクラス変数(クラスから生成された全てのインスタンスから参照できる変数)
      @@count += 1
    else
      @@count = 1
    end
  end

  def self.count
    @@count
  end
end

count_animal = Animal.new('キングペンギン')
p Animal.count

コメント

記事に戻る

コメントを残す