Help us understand the problem. What is going on with this article?

クラスについて

用語

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

アクセス修飾子

・どこからメソッド、プロパティがどこからアクセス可能かを示す修飾子
・アクセス修飾子を指定しないと、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キーワードをしたメソッドは継承された派生クラスでオーバーライド(子クラスで親クラスのメソッドを再定義)出来なくする

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした