Αφηρημένες ΟΟΠ Κλάσεις στο TypeScript

Υπάρχουν περιπτώσεις όπου έχουμε μια γονική κλάση, που περιέχει κοινές ιδιότητες και μεθόδους, και από αυτήν κληρονομούν παιδικές κλάσεις.

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

Σε αυτήν την περίπτωση, για να απαγορεύσουμε ρητά τη δημιουργία αντικειμένων της γονικής κλάσης, μπορούμε να την δηλώσουμε αφηρημένη. Αυτό γίνεται χρησιμοποιώντας τη λέξη-κλειδί abstract.

Ας δούμε ένα παράδειγμα. Ας πάρουμε την κλάση User και ας την δηλώσουμε αφηρημένη:

typescriptabstract class User {
  public name: string;
  
  constructor(name: string) {
    this.name = name;
  }
}

Ας φτιάξουμε την κλάση Student, που κληρονομεί από τον User:

typescriptclass Student extends User {
  public course: number;

  constructor(name: string, course: number) {
    super(name);
    this.course = course;
  }
}

Ας φτιάξουμε την κλάση Employee, που κληρονομεί από τον User:

typescriptclass Employee extends User {
  public salary: number;

  constructor(name: string, salary: number) {
    super(name);
    this.salary = salary;
  }
}
Задание 1

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

Задание 2

Φτιάξτε την κλάση Square, που κληρονομεί από την κλάση Figure.

Задание 3

Φτιάξτε την κλάση Rectangle, που κληρονομεί από την κλάση Figure.