LoginSignup
2
3

More than 3 years have passed since last update.

クラスについて

Last updated at Posted at 2020-01-22

用語

説明
プロパティ クラス内の変数
メソッド クラス内の関数
クラス メソッド、クラスの集まり(設計書)
インスタンス クラスから生成されるもの
オブジェクト インスタンスメソッド

アクセス修飾子

・どこからメソッド、プロパティがどこからアクセス可能かを示す修飾子
・アクセス修飾子を指定しないと、publicの扱いになる

種類 説明
public  どこからでもアクセス可能
private クラス内のみアクセス可能
protected クラス内とそノクタスを継承した子クラスからアクセス可能

インスタンス

・クラスをもとにしてものを作ること
・インスタンス化したら基本的に変数に代入する

インスタンス作成
$変数名 = new クラス名引数

アロー演算子

・インスタンスのプロパティやメソッドにアクセスするには、-> を使う

クラスの定義
class Car {

    public $name;//初期値指定可能
    public function drive() {
        echo '走ります';
    }
}

// Carクラスのインスタンスを作成
$prius = new Car();

//プロパティにアクセス、代入、呼び出し
$prius->name = 'aqua';
echo $prius->name;// aqua

// インスタンスした(drive)メソッドへアクセス
$prius->drive();// 走ります

this

・クラス内のプロパティ、メソッドにアクセスできるインスタンスメソッド
・staticメソッドでは使えない

this
class Car {

    private $state = '走ります';

    public function drive() {
        //プロパティにアクセス
        return $this->state;
    }
}

$prius = new Car();
echo $prius->drive()// 走ります

static(静的プロパティ)

・クラスのプロパティ、メソッドをstaticと宣言することで、クラスのインスタンス化無しでアクセス可能
・静的プロパティは->で呼び出せない

self

・自クラスのプロパティ、メソッドへのアクセス
self::
クラス内の自身のインスタンスを生成
new self

静的プロパティ
class Car {

    public static $name = 'aqua';

    public static function drive() {
        echo '運転';
    }
    public static function enjoy() {
        //自クラスのメソッド、プロパティにアクセス
        self::drive();
        self::$name;
    }
}
echo Car::$name;// aqua
Car::drive();// 運転

Car::buy();// aqua運転

対応表

インスタンスプロパティ インスタンスメソッド 静的プロパティ 静的メソッド
外部から $a->name $a->name() クラス名::$name クラス名::$name
インスタンスメソッド内から $this->name $this>name() self::$name self::$name()
静的メソッド内から × × self::$name self::$name()

コンストラクタ

・オブジェクトを生成するうえで必要なパラメータや、そのクラスのオプションなどを引数として受取り、プロパティにセットするという役割を果たす。

コンストラクタ
class Car {

  private $name = '';
  //引数をコンストラクタで受け取る
  public function __construct($name){
    //受け取った値をプロパティとして保存
    $this->name = $name;
  }

  public function getName(){
    return $this->name;
  }
}

$a = new Car('aqua');
echo $a->getName();// aqua

継承

・同じような処理を二度三度定義し直すのお回避するためにあるコード再利用の仕組み
・親クラスのプロパティ、メソッドが全て引き継ぎ
・引き継いだものはpublicprotectedなものに限定してアクセス可能
・外部からのアクセスはpublicのみ

BはAの継承クラスである定義
class B extends A { } 

finalキーワード

・fainalキーワードをしたメソッドは継承された派生クラスでオーバーライド(子クラスで親クラスのメソッドを再定義)出来なくする

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3