Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τι είναι μια αφηρημένη κλάση και πώς διαφέρει από μια κανονική κλάση;

sobes.tech AI

Απάντηση από AI

Μια αφηρημένη κλάση είναι μια κλάση που δεν προορίζεται για άμεση δημιουργία αντικειμένων, αλλά χρησιμεύει ως βάση για άλλες κλάσεις. Στη C++, μια αφηρημένη κλάση ορίζεται από την παρουσία τουλάχιστον μιας καθαρής εικονικής λειτουργίας.

Διαφορές μεταξύ μιας αφηρημένης κλάσης και μιας κανονικής:

  • Δεν μπορεί να δημιουργηθεί άμεσα ένα αντικείμενο της αφηρημένης κλάσης.
  • Περιέχει τουλάχιστον μια καθαρή εικονική λειτουργία, την οποία πρέπει να υλοποιήσουν οι παράγωγες κλάσεις.
  • Χρησιμοποιείται για τον ορισμό του διεπαφής και της γενικής λειτουργικότητας που πρέπει να κληρονομηθούν από τις υποκλάσεις.

Παράδειγμα:

class AbstractBase {
public:
    virtual void doSomething() = 0; // καθαρή εικονική λειτουργία
};

class Derived : public AbstractBase {
public:
    void doSomething() override {
        // υλοποίηση
    }
};

// AbstractBase obj; // σφάλμα, δεν μπορεί να δημιουργηθεί αντικείμενο αφηρημένης κλάσης
Derived d; // σωστό