// SUPERCLASSE
//abstract significa que esta classe não pode ser
//instanciada diretamente no objeto, apenas herdada
abstract class FormaGeometrica{ 
    // indica que todas as subclasses devem implementar
    // esse método
    abstract calcular_area():number;
}

// criando subclasses / polimorfismo
// usou extends é obrigatório usar super();
class Quadrado extends FormaGeometrica{
    constructor(private lado: number){
        super();
    }
    calcular_area():number{
        return this.lado * this.lado;
    }
}

class Circulo extends FormaGeometrica{
    constructor(private raio: number){
        super();
    }
    calcular_area():number{
        return Math.PI * this.raio * this.raio;
    }
}

// OBJETO
// usou array[], usa forEach()
// new cria o objeto dentro do array[]
const formas:FormaGeometrica[]=[
    new Quadrado(5),
    new Circulo(3)
];

formas.forEach(forma => {
    console.log(`Área: ${forma.calcular_area().toFixed(2)}`)
});








Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: