Αφηρημένες ΟΟΠ Κλάσεις στο TypeScript
Υπάρχουν περιπτώσεις όπου έχουμε μια γονική κλάση, που περιέχει κοινές ιδιότητες και μεθόδους, και από αυτήν κληρονομούν παιδικές κλάσεις.
Σε αυτήν την περίπτωση, μπορεί να συμβαίνει ότι δημιουργούμε αντικείμενα από τις παιδικές κλάσεις, αλλά όχι από τη γονική κλάση. Αυτή χρειάζεται μόνο για την ομαδοποίηση κοινών ιδιοτήτων και μεθόδων.
Σε αυτήν την περίπτωση, για να απαγορεύσουμε ρητά τη δημιουργία
αντικειμένων της γονικής κλάσης, μπορούμε
να την δηλώσουμε αφηρημένη. Αυτό
γίνεται χρησιμοποιώντας τη λέξη-κλειδί abstract.
Ας δούμε ένα παράδειγμα. Ας πάρουμε την
κλάση User και ας την δηλώσουμε αφηρημένη:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Ας φτιάξουμε την κλάση Student, που κληρονομεί
από τον User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Ας φτιάξουμε την κλάση Employee, που κληρονομεί
από τον User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Δημιουργήστε μια αφηρημένη κλάση Figure,
που αντιπροσωπεύει ένα γεωμετρικό σχήμα.
Ας έχει ιδιότητες για την περίμετρο
και το εμβαδόν.
Φτιάξτε την κλάση Square, που κληρονομεί
από την κλάση Figure.
Φτιάξτε την κλάση Rectangle, που κληρονομεί
από την κλάση Figure.