Classes Abstratas de OOP em TypeScript
Há situações em que temos uma classe pai contendo propriedades e métodos comuns, e classes filhas que herdam dela.
Além disso, pode acontecer de criarmos objetos das classes filhas, mas não da classe pai. Ela é necessária apenas para agrupar propriedades e métodos comuns.
Nesse caso, para proibir explicitamente a criação
de objetos da classe pai, podemos
declará-la como abstrata. Isso
é feito usando a palavra-chave abstract.
Vamos ver um exemplo. Vamos pegar nossa
classe User e declará-la como abstrata:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Vamos criar a classe Student, herdando
de User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Vamos criar a classe Employee, herdando
de User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Crie uma classe abstrata Figure,
que representa uma figura geométrica.
Que ela tenha propriedades para o perímetro
e a área.
Faça a classe Square, herdando
da classe Figure.
Faça a classe Rectangle, herdando
da classe Figure.