Métodos abstratos em POO em TypeScript
Às vezes acontece que classes derivadas devem
ter um método comum, porém, a implementação desse
método depende da derivada específica. Neste
caso, este método pode ser declarado na
classe abstrata pai, sem escrever
sua implementação. E então as classes derivadas
serão obrigadas a implementar esses métodos. Tais
métodos são chamados de métodos abstratos e
também são declarados usando a palavra-chave
abstract.
Vamos, por exemplo, pegar nossa classe
abstrata User. Suponha que as classes que herdam desta
classe devem obrigatoriamente ter um método show,
que exibe os dados do objeto.
A implementação deste método, no entanto,
dependerá da classe derivada. Vamos na classe User
declarar este método como abstrato:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
Vamos implementar este método na classe derivada Student:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
Vamos implementar este método na classe derivada Employee:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
Na classe abstrata Figure, crie
métodos abstratos para obter a área
e o perímetro.
Nas classes derivadas Square e
Rectangle, escreva a implementação desses
métodos.