class HelloWorld {
public static void main
(String args
[]) { Veiculo veiculoT = new Veiculo();
System.
out.
println("veiculoT"); veiculoT.diagnostico();
veiculoT.liga();
Testador.teste(veiculoT);
Financeiro.compra(veiculoT);
System.
out.
println("---------------"); Veiculo carro = new Carro();
carro.diagnostico();
carro.liga();
Testador.teste(carro);
Financeiro.compra(carro);
System.
out.
println("---------------"); Carro carro2 = new Carro();
carro2.diagnostico();
carro2.liga();
carro2.buzina();
Testador.teste(carro2);
Financeiro.compra(carro2);
}
}
interface Funcionamento {
default void liga() {
}
static void buzina() {
System.
out.
println("Buzinou!"); }
}
class Testador {
public static void teste(Funcionamento veiculo) {
System.
out.
println("Vai testar"); veiculo.liga();
}
}
class Financeiro {
public static void compra(Veiculo veiculo) {
System.
out.
println("Comprou N: " + veiculo.
id); veiculo.diagnostico();
veiculo.liga();
}
}
class Veiculo implements Funcionamento {
public int id = 1;
public void diagnostico() {
Funcionamento.super.liga();
Funcionamento.buzina();
liga();
System.
out.
println("Tudo ok!"); }
}
class Carro extends Veiculo {
public void liga() {
}
public void buzina() {
}
}
//https://pt.stackoverflow.com/q/121240/101
Y2xhc3MgSGVsbG9Xb3JsZCB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CiAgICAgICAgVmVpY3VsbyB2ZWljdWxvVCA9IG5ldyBWZWljdWxvKCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ2ZWljdWxvVCIpOwogICAgICAgIHZlaWN1bG9ULmRpYWdub3N0aWNvKCk7CiAgICAgICAgdmVpY3Vsb1QubGlnYSgpOwogICAgICAgIFRlc3RhZG9yLnRlc3RlKHZlaWN1bG9UKTsKICAgICAgICBGaW5hbmNlaXJvLmNvbXByYSh2ZWljdWxvVCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCItLS0tLS0tLS0tLS0tLS0iKTsKICAgICAgICBWZWljdWxvIGNhcnJvID0gbmV3IENhcnJvKCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjYXJybyIpOwogICAgICAgIGNhcnJvLmRpYWdub3N0aWNvKCk7CiAgICAgICAgY2Fycm8ubGlnYSgpOwogICAgICAgIFRlc3RhZG9yLnRlc3RlKGNhcnJvKTsKICAgICAgICBGaW5hbmNlaXJvLmNvbXByYShjYXJybyk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCItLS0tLS0tLS0tLS0tLS0iKTsKICAgICAgICBDYXJybyBjYXJybzIgPSBuZXcgQ2Fycm8oKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNhcnJvMiIpOwogICAgICAgIGNhcnJvMi5kaWFnbm9zdGljbygpOwogICAgICAgIGNhcnJvMi5saWdhKCk7CiAgICAgICAgY2Fycm8yLmJ1emluYSgpOwogICAgICAgIFRlc3RhZG9yLnRlc3RlKGNhcnJvMik7CiAgICAgICAgRmluYW5jZWlyby5jb21wcmEoY2Fycm8yKTsKICAgIH0KfQoKaW50ZXJmYWNlIEZ1bmNpb25hbWVudG8gewogICAgZGVmYXVsdCB2b2lkIGxpZ2EoKSB7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJMaWdvdSEiKTsKICAgIH0KICAgIHN0YXRpYyB2b2lkIGJ1emluYSgpIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkJ1emlub3UhIik7CiAgICB9Cn0KCmNsYXNzIFRlc3RhZG9yIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0ZShGdW5jaW9uYW1lbnRvIHZlaWN1bG8pIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlZhaSB0ZXN0YXIiKTsKICAgICAgICB2ZWljdWxvLmxpZ2EoKTsKICAgIH0KfQoKY2xhc3MgRmluYW5jZWlybyB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgY29tcHJhKFZlaWN1bG8gdmVpY3VsbykgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ29tcHJvdSBOOiAiICsgdmVpY3Vsby5pZCk7CiAgICAgICAgdmVpY3Vsby5kaWFnbm9zdGljbygpOwogICAgICAgIHZlaWN1bG8ubGlnYSgpOwogICAgfQp9CgpjbGFzcyBWZWljdWxvIGltcGxlbWVudHMgRnVuY2lvbmFtZW50byB7CiAgICBwdWJsaWMgaW50IGlkID0gMTsKICAgIHB1YmxpYyB2b2lkIGRpYWdub3N0aWNvKCkgewogICAgICAgIEZ1bmNpb25hbWVudG8uc3VwZXIubGlnYSgpOwogICAgICAgIEZ1bmNpb25hbWVudG8uYnV6aW5hKCk7CiAgICAgICAgbGlnYSgpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVHVkbyBvayEiKTsKICAgIH0KfQoKY2xhc3MgQ2Fycm8gZXh0ZW5kcyBWZWljdWxvIHsKICAgIHB1YmxpYyB2b2lkIGxpZ2EoKSB7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJWcm9tISIpOwogICAgfQogICAgcHVibGljIHZvaWQgYnV6aW5hKCkgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYmkgYmkhIik7CiAgICB9Cn0KCi8vaHR0cHM6Ly9wdC5zdGFja292ZXJmbG93LmNvbS9xLzEyMTI0MC8xMDE=