Skip to content

Instantly share code, notes, and snippets.

@faustoct1
Created July 16, 2022 21:31
Show Gist options
  • Save faustoct1/c08bddf7b7fedb4f24505d1d64b42c8c to your computer and use it in GitHub Desktop.
Save faustoct1/c08bddf7b7fedb4f24505d1d64b42c8c to your computer and use it in GitHub Desktop.
Básico de programação orientada a objeto em javascript
class Abstrata {
print = () => {
throw "método abstrato precisa de implementação"
}
}
class Concreta1 extends Abstrata {
print = () => {
console.log('Classe concreta1 que estende classe abstrata')
}
}
class Concreta2 extends Abstrata {
print = () => {
console.log('Classe concreta2 que estende classe abstrata')
}
}
class Concreta3 extends Abstrata {
}
const executor = async (obj) => obj.print()
const test = async () => {
await executor(new Concreta1()) //Classe concreta1 que estende classe abstrata
await executor(new Concreta2()) //Classe concreta2 que estende classe abstrata
try{
await executor(new Concreta3())
}catch(e){
console.log(e) //Precisa implementar método abstrato
}
console.log(new Concreta1() instanceof Concreta1) // true
console.log(new Concreta1() instanceof Concreta2) // false
console.log(new Concreta1() instanceof Abstrata) // true
}
(async ()=>{ test() })()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment