Sobes.tech
Junior

რა არის აბსტრაქტული კლასი?

sobes.tech AI

პასუხი AI-სგან

აბსტრაქტული კლასი არის კლასი, რომელიც პირდაპირი ინსტანცირებით ვერ მიიღება, ანუ მისი ობიექტის შექმნა new-ის გამოყენებით შეუძლებელია. იგი განკუთვნილია სხვა კლასებისთვის (შთამომავლებისთვის) როგორც საწყისი კლასი.

აბსტრაქტული კლასის ძირითადი მახასიათებლები:

  • გამოაცხადება სიტყვით abstract.
  • შეიძლება შეიცავდეს როგორც აბსტრაქტულ, ასევე ჩვეულებრივ (კონკრეტულ) მეთოდებს.
  • აბსტრაქტული მეთოდები გამოაცხადება abstract-ით და არ აქვთ სხეული (რეალიზაცია). მათ უნდა განხორციელდეს შთამომავლობითი კლასებში.
  • შეიძლება შეიცავდეს კონსტანტულ მნიშვნელობებს და თვისებებს.
<?php

abstract class AbstractClass
{
    // აბსტრაქტული მეთოდი - უნდა განხორციელდეს შთამომავლობითი კლასში
    abstract protected function abstractMethod();

    // ჩვეულებრივი მეთოდი
    public function concreteMethod()
    {
        echo "ეს არის კონკრეტული მეთოდი\n";
    }
}

class ConcreteClass extends AbstractClass
{
    // აბსტრაქტული მეთოდის განხორციელება
    protected function abstractMethod()
    {
        echo "ეს არის აბსტრაქტული მეთოდის განხორციელება\n";
    }
}

// აბსტრაქტული კლასის ობიექტის შექმნა შეუძლებელია
// $obj = new AbstractClass(); // შეცდომა

// შესაძლებელია კონკრეტული კლასის ობიექტის შექმნა
$obj = new ConcreteClass();
$obj->abstractMethod();
$obj->concreteMethod();

აბსტრაქტული კლასები გამოიყენება საერთო ინტერფეისისა და ფუნქციონალობის განსაზღვრაში დაკავშირებული კლასების ჯგუფისთვის, ხოლო რეალიზაციის დეტალები რჩება კონკრეტული შთამომავლობითი კლასებისათვის. კოდის მომხმარებლის მხრიდან, შესაძლებელია მუშაობა შთამომავლობითი კლასების ობიექტებთან, გამოყენებით ძირითადი აბსტრაქტული კლასის ტიპი, რაც უზრუნველყოფს პოლიმორფიზმს.