Métodos abstractos en POO en TypeScript
Puede suceder que las clases descendientes deban
tener un método común, sin embargo, la implementación de este
método depende del descendiente específico. En
este caso, este método se puede declarar en
la clase abstracta padre, sin escribir
su implementación. Y entonces los descendientes
estarán obligados a implementar estos métodos. Tales
métodos se denominan abstractos y
también se declaran usando la palabra clave
abstract.
Tomemos como ejemplo nuestra clase abstracta
User. Supongamos que los herederos de esta
clase deben tener obligatoriamente un método show,
que muestre los datos del objeto.
La implementación de este método, sin embargo,
dependerá del descendiente. Declaremos este método como abstracto en la clase User:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
Implementemos este método en la clase descendiente Student:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
Implementemos este método en la clase descendiente Employee:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
En la clase abstracta Figure haz
métodos abstractos para obtener el área
y el perímetro.
En las clases descendientes Square y
Rectangle escribe la implementación de estos
métodos.