Created
July 16, 2022 21:31
-
-
Save faustoct1/c08bddf7b7fedb4f24505d1d64b42c8c to your computer and use it in GitHub Desktop.
Básico de programação orientada a objeto em javascript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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