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; // σωστό