Sobes.tech
Junior

Kas ir abstrakta klase?

sobes.tech AI

Atbilde no AI

Abstrakta klase ir klase, kuru nevar var tieši izveidot, tas ir, tās objekta izveide ar new nav iespējama. Tā ir paredzēta kā pamata klase citām klasēm (paveldētājiem).

Galvenās abstraktās klases īpašības:

  • Deklarēta ar atslēgas vārdu abstract.
  • Var saturēt gan abstraktas, gan parastas (konkrētas) metodes.
  • Abstraktās metodes tiek deklarētas ar abstract un tām nav ķermeņa (īstenošanas). Tās jāīsteno neabstraktajās klasēs, kas tās manto.
  • Var saturēt konstantes vērtības un īpašības.
<?php

abstract class AbstractClass
{
    // Abstrakta metode - jāīsteno bērnu klasē
    abstract protected function abstractMethod();

    // Parasta metode
    public function concreteMethod()
    {
        echo "Šis ir konkrēts metodes\n";
    }
}

class ConcreteClass extends AbstractClass
{
    // Abstraktās metodes īstenošana
    protected function abstractMethod()
    {
        echo "Šī ir abstraktās metodes īstenošana\n";
    }
}

// Nav iespējams izveidot abstraktās klases objektu
// $obj = new AbstractClass(); // Kļūda

// Ir iespējams izveidot konkrētās klases objektu
$obj = new ConcreteClass();
$obj->abstractMethod();
$obj->concreteMethod();

Abstraktās klases tiek izmantotas kopīgas saskarnes un funkcionalitātes definēšanai saistītām klasēm, atstājot īstenošanas detaļas konkrētiem bērnu klasēm. No koda lietotāja skatpunkta, ar objektiem bērnu klasēm var strādāt, izmantojot pamata abstraktās klases tipu, kas nodrošina polimorfismu.