Você está na página 1de 6

3.

Interface
- um tipo de classe Java que:
- Contm operaes e no mtodos
- No precisa dizer como so feitas as operaes.
- Diz apenas que as operaes existem que elas retornam determinado tipo de
dados e que requerem certos parmetros.

Exemplo: Interface
publicinterfaceITreinamento{
publicStringiniciarTreinamento();
}

Exemplo: Classe implementa Interface


publicclassTreinamentoimplementsITreinamento{
publicStringiniciarTreinamento(){
return"InicioTreinamento";
}

publicStringfinalizarTreinamento(){
return"TerminoTreinamento";
}
}

- Como a varivel treinamento foi declarada como sendo do tipo Treinamento,


possvel ter acesso ao mtodo iniciarTreinamento() e finalizarTreinamento().
Porm, treinamento2 foi instanciado como sendo do tipo ITreinamento, portanto,
possvel ter acesso somente ao mtodo desta interface.

publicclassTesteInterface{
publicstaticvoidmain(String[]args){
Treinamentotreinamento=newTreinamento();
ITreinamentotreinamento2=newTreinamento();

System.out.println("Treinamento(Classe):"+
treinamento.iniciarTreinamento());
System.out.println("Treinamento(Classe):"+
treinamento.finalizarTreinamento());
System.out.println("Treinamento(Interface):"+
treinamento2.iniciarTreinamento());
}
}

Exemplo: Duas Classes Diferentes implementam a mesma Interface


- Implementar uma outra classe chamada Treinamento2 que implementa a mesma
interface ITreinamento.
publicclassTreinamento2implementsITreinamento{
publicStringiniciarTreinamento(){
return"HoradecomearoTreinamento";
}
}

publicclassTesteInterfaceImplClassesDiferentes{

publicstaticvoidmain(String[]args){
ITreinamentotreinamento=newTreinamento();
ITreinamentotreinamento2=newTreinamento2();

System.out.println("Treinamento:"+
treinamento.iniciarTreinamento());
System.out.println("Treinamento2:"+
treinamento2.iniciarTreinamento());
}
}

Exerccio:
- Implementar uma Interface chamada IVeiculo com as seguintes operaes:

publicStringacelerar();
publicStringbrecar();

- Implementar uma classe chamada Veiculo que implementa essa interface IVeiculo e
que tenha dois mtodos adicionais (ligar e desligar):

publicStringacelerar(){
returnnewString("Acelerando...");
}

publicStringbrecar(){
returnnewString("...Brecando");
}

publicStringligar(){
returnnewString("Ligado");
}

publicStringdesligar(){
returnnewString("Desligado");
}

- Implementar uma classe chamada Veiculo2 que implementa essa interface IVeiculo
diferenciando os mtodos atravs das Strings de retorno.

publicStringacelerar(){
returnnewString("Aumentandoavelocidade");
}

publicStringbrecar(){
returnnewString("Diminuindoavelocidade");
}

- Implementar uma classe para teste chamada TesteInterface que instancie e as duas
classes acima como sendo do tipo IVeiculo e que mostre o resultado dos mtodos
acelerar() e brecar().

IVeiculoveiculo=newVeiculo();
IVeiculoveiculo2=newVeiculo2();

System.out.println(veiculo.acelerar());
System.out.println(veiculo.brecar());

System.out.println(veiculo2.acelerar());
System.out.println(veiculo2.brecar());

Exemplo: Interface passada como Parmetro


- Interface ITreinamento com a operao iniciarTreinamento()

publicinterfaceITreinamento{
publicStringiniciarTreinamento();
}

- Classe Treinamento que implementa a interface ITreinamento

publicclassTreinamentoimplementsITreinamento{
publicStringiniciarTreinamento(){
return"InicioTreinamento";
}
}

- Classe Treinamento2 que implementa a interface ITreinamento

publicclassTreinamento2implementsITreinamento{
publicStringiniciarTreinamento(){
return"HoradecomearoTreinamento";
}
}

- Classe TreinamentoParametro com o mtodo apresentaMensagem() que requer


como parmetro um objeto declarado como sendo do tipo Itreinamento

publicclassTreinamentoParametro{
publicStringapresentaMensagem(ITreinamentotreinamento){
returntreinamento.iniciarTreinamento();
}
}

- Classe TesteInterfaceParametro que instancia dois objetos declarados como sendo


do tipo ITreinamento e um objeto TreinamentoParametro. Esta classe mostra o
retorno da operao apresentaMensagem() deste ultimo objeto para cara objeto
declarado como sendo do tipo ITreinamento instanciado.

publicclassTesteInterfaceParametro{
publicstaticvoidmain(String[]args){
ITreinamentotreinamento=newTreinamento();
ITreinamentotreinamento2=newTreinamento2();

TreinamentoParametrotreinamentoParametro=new
TreinamentoParametro();

System.out.println("ApresentaMensagem:"+
treinamentoParametro.apresentaMensagem(treinamento));
System.out.println("ApresentaMensagem:"+
treinamentoParametro.apresentaMensagem(treinamento2));
}
}

Exerccio:
- Implementar uma interface chamada IVeiculo com as seguintes operaes:

publicStringacelerar();
publicStringbrecar();

- Implementar uma classe chamada Veiculo que implementa essa interface IVeiculo:

publicStringacelerar(){
returnnewString("Acelerando...");
}

publicStringbrecar(){
returnnewString("...Brecando");
}

- Implementar uma classe chamada Veiculo2 que implementa essa interface IVeiculo

publicStringacelerar(){
returnnewString("Aumentandoavelocidade");
}

publicStringbrecar(){
returnnewString("Diminuindoavelocidade");
}

- Implementar uma classe chamada VeiculoParametro que tenha os seguintes


mtodos:
publicStringmensagemAcelerar(IVeiculoveiculo){
returnveiculo.acelerar();
}

publicStringmensagemBrecar(IVeiculoveiculo){
returnveiculo.brecar();
}

- Implementar uma classe para teste chamada TesteInterfaceParametro que instancie


as duas classes acima declaradas como sendo do tipo IVeiculo e que instancie a
classe VeiculoParametro. Esta classe deve mostrar o resultado dos mtodos
mensagemAcelerar() e mensagemBrecar() para cada um dos objetos instanciados
como sendo do tipo IVeiculo.

IVeiculoveiculo=newVeiculo();
IVeiculoveiculo2=newVeiculo2();

VeiculoParametroveiculoParametro=newVeiculoParametro();

System.out.println(veiculoParametro.mensagemAcelerar(veiculo));
System.out.println(veiculoParametro.mensagemBrecar(veiculo));
System.out.println(veiculoParametro.mensagemAcelerar(veiculo2));
System.out.println(veiculoParametro.mensagemBrecar(veiculo2));
}