Last active
November 21, 2019 01:04
-
-
Save ramon-src/eac6bf031d1d03efe3b43ffd1a4752b9 to your computer and use it in GitHub Desktop.
This file contains 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 Pagamento { | |
public void executar(TipoDePagamento tipo) { | |
tipo.debita(); | |
} | |
} | |
/* | |
* Logo, podemos passar por parâmetro qualquer classe que extenda TipoDePagamento, | |
* para o método executar da classe Pagamento. | |
*/ | |
var pagamento = new Pagamento() | |
var cartaoDebito = new CartaoDebito() // Cartão Débito extende TipoDePagamento | |
pagamento.executar(cartaoDebito) // print: debita sem taxa | |
/* | |
* método executar, executa o método debita da classe concreta que extende a classe abstrata TipoDePagamento, | |
* então fará um print do texto: debita sem taxa | |
*/ | |
var cartaoCredito = new CartaoCredito() // Cartão Crédito extende TipoDePagamento | |
pagamento.executar(cartaoCredito) // print: debita com taxa | |
/* | |
* método executar, executa o método debita da classe concreta que extende a classe abstrata TipoDePagamento, | |
* então fará um print do texto: debita com taxa | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment