Clases abstractas de POO en TypeScript
Hay situaciones en las que tenemos una clase padre que contiene propiedades y métodos comunes, y de ella heredan las clases hijas.
En este caso, puede ser que creemos objetos de las clases hijas, pero no de la clase padre. Esta solo nos es necesaria para agrupar propiedades y métodos comunes.
En este caso, para prohibir explícitamente la creación
de objetos de la clase padre, podemos
declararla abstracta. Esto
se hace usando la palabra clave abstract.
Veamos un ejemplo. Tomemos nuestra
clase User y declarémosla abstracta:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Hagamos la clase Student, que hereda
de User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Hagamos la clase Employee, que hereda
de User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Crea una clase abstracta Figure,
que representa una figura geométrica.
Que tenga propiedades para el perímetro
y el área.
Haz una clase Square, que herede
de la clase Figure.
Haz una clase Rectangle, que herede
de la clase Figure.