Sobes.tech
Junior

Έχετε χρησιμοποιήσει αφηρημένες κλάσεις στα έργα σας;

sobes.tech AI

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

Ναι, το έχω χρησιμοποιήσει. Οι αφηρημένες κλάσεις χρησιμοποιούνταν για τη δημιουργία βασικών δομών με κοινές μεθόδους και ιδιότητες, οι οποίες κληρονομούνται από συγκεκριμένες κλάσεις.

// Δήλωση αφηρημένης κλάσης
public abstract class Shape
{
    // Αφηρημένη μέθοδος που πρέπει να υλοποιηθεί στις υποκλάσεις
    public abstract double GetArea();

    // Εικονική μέθοδος με προεπιλεγμένη υλοποίηση, που μπορεί να υπερισχύσει
    public virtual void Draw()
    {
        Console.WriteLine("Ζωγραφική σχήματος.");
    }
}

// Συγκεκριμένη κλάση που κληρονομεί από Shape
public class Circle : Shape
{
    public double Radius { get; set; }

    public Circle(double radius)
    {
        Radius = radius;
    }

    // Υλοποίηση της αφηρημένης μεθόδου
    public override double GetArea()
    {
        return Math.PI * Radius * Radius;
    }

    // Υπερκαλύπτει την εικονική μέθοδο
    public override void Draw()
    {
        Console.WriteLine($"Ζωγραφική κύκλου με ακτίνα {Radius}.");
    }
}

Κύρια σενάρια χρήσης:

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

Διαφορές με τις διεπαφές:

Χαρακτηριστικό Αφηρημένη κλάση Διεπαφή
Κληρονόμηση Απαγορεύεται η πολλαπλή κληρονόμηση Επιτρέπεται η πολλαπλή υλοποίηση
Υλοποίηση Μπορεί να περιέχει υλοποιήσεις μεθόδων Μέχρι C# 8.0 - μόνο δηλώσεις, μετά - προεπιλεγμένες υλοποιήσεις
Μέλη Μπορεί να έχει πεδία, κατασκευαστές, εικονικές/αφηρημένες/κανονικές μεθόδους Μέχρι C# 8.0 - μόνο μέθοδοι και ιδιότητες, μετά - επίσης στατικά μέλη και προεπιλεγμένες υλοποιήσεις
Κατάσταση Μπορεί να έχει κατάσταση (μέσω πεδίων) Δεν μπορεί να έχει κατάσταση