PHP شیءگرا · ۱۰ دقیقه مطالعه

وراثت، abstract و interface

وراثت

class Content {
    public function __construct(public string $title) {}
    public function show(): string { return $this->title; }
}

class Lesson extends Content {
    public function __construct(string $title, public int $minutes) {
        parent::__construct($title);
    }
    public function show(): string {
        return parent::show() . " ({$this->minutes} دقیقه)";
    }
}

extends ارث‌بری، parent:: دسترسی به والد، و بازنویسی (override) متد.

کلاس abstract

قالبی که مستقیم نمونه نمی‌گیرد:

abstract class Exercise {
    abstract public function check(string $answer): bool;
}
class Quiz extends Exercise {
    public function check(string $answer): bool { return $answer === "ok"; }
}

هر فرزند باید متد abstract را پیاده کند.

interface — قرارداد

interface Runner {
    public function run(string $code): string;
}
class PhpRunner implements Runner {
    public function run(string $code): string { return "اجرا"; }
}

کلاس می‌تواند چند interface را پیاده کند. کدی که به interface وابسته است، به پیاده‌سازی خاص گره نمی‌خورد — اصل «وابستگی به انتزاع».

برای ثبت پیشرفت و کسب XP وارد شو.

ورود به میدان
→ کلاس، شیء، سازنده و سطوح دسترسی
trait، static و namespace ←