《PHP8上級試験対策》抽象クラスと抽象メソッドの継承ルールを整理する

  • URLをコピーしました!

はじめに

PHPには「抽象クラス」と「抽象メソッド」という仕組みがあります。これはオブジェクト指向を学ぶ上で必須の概念であり、PHP8上級試験でも頻出です。本記事では、抽象クラスの基本ルールから、実装を持ち越す場合の挙動までを整理し、サンプルコードで具体的に確認します。

キーワード: 抽象クラス / 抽象メソッド / 継承 / 実装の持ち越し /

目次

抽象クラスとは?

  • abstract class で定義
  • new ではインスタンス化できない
  • 共通の枠組み(インターフェイス的役割)を示すために利用され

抽象メソッドのルール

  • abstract キーワードで宣言
  • 実装(中身)は書けない
  • 最終的に具象クラスで必ず実装する必要がある

実装の持ち越し

  • 抽象クラスを継承したクラスが再び抽象クラスであれば、未実装のまま「持ち越し」可能
  • 具象クラスになった時点で、残っている抽象メソッドをすべて実装しなければならない

サンプルコード

<?php
declare(strict_types=1);
error_reporting(-1);

abstract class Hoge{
    abstract public function test();
    abstract public function test2();
}
abstract class Foo extends Hoge{
    public function test(){
        echo __METHOD__ , "\n";
    }
}
class Bar extends Foo{
    public function test2(){
        echo __METHOD__ , "\n";        
    }
}
$obj = new Bar();
$obj->test();
$obj->test2();

実行結果

Foo::test
Bar::test2

まとめ

  • 抽象クラスは インスタンス化できない
  • 抽象メソッドは 最終的に全部実装が必要
  • 持ち越しは抽象クラス同士でのみ可能
  • 具象クラスで未実装があるとエラー

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次