Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Clases abstractas

13/25
Recursos

Aportes 3

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

export abstract class Programa{
	constructor(
		protected name: string,
		protected owner: string,
	 ){}
	codifica(param: number, param2: number){
		console.log(`${this.name} codifica ${param}x, ${param2}y mas rapido`);
	}
	about(){
		console.log(`Hola soy ${this.name},y mi propietario es: ${this.owner}`);
	}
	protected compila(){
		console.log(`${this.name} compilando...\n`);
	}
}

export class Editor extends Programa{
	programa(){ this.compila() }
}

const editor1 = new Editor("VSCODE", "Microsoft");
editor1.codifica(1,2);
editor1.about();
editor1.programa();

const editor2 = new Editor("CHEATCODES", "CheatModes4");
editor2.codifica(10,30);
editor2.about();
editor2.programa();

En conclusión, cada vez que implementamos una clase abstracta, no podemos crear instancias de esa clase, si no solo de las clases hijas.

abstract class Pet {} // no instancias de esta clase

class Dog extends Pet {} // de esta si podemos

Abstract se puede usar como interface, ya que con interface no se puede tener atributos o métodos private o protected. Estos solo pueden se public.

Ejemplo:

abstract class Base {
  protected abstract getName(name: string): string;
  protected abstract height: number;
}

class Derived extends Base {
  constructor (
    protected height: number = 5,
    ) {
    super();
  }
  protected getName(name: string) {
    return "world" + name;
  }
}