Consegui entender abstração, polimorfismo, herança e encapsulamento, mas esta dificil para entender Interface…
Alguem tem uma explicação mais clara e direta…muito obrigado.
Sou péssimo para explicar coisas “formalmente” então, como sempre, vou explicar “em parábolas”:
Pense em uma interface “Carro”: ela tem os métodos abrirPorta(), abrirPortaMalas() e Buzinar(). Agora veja: essas são características de TODOS os carros, logo, se eu tiver uma classe Fiat ou Ferrari, para facilitar meu trabalho eu poderia simplesmente implementar a interface Carro às mesmas já que ambas têm portas que podem ser abertas, porta-malas que podem ser abertos e ambas Buzinam. Porém, eu não iria implementar essa interface a uma classe Suzuki, já que Suzuki é uma moto e logo não tem portas, para isso eu criaria uma interface Moto com seus respectivos métodos. Agora, para que isso serviria? Bem, tendo em vista que eu implementei “Carro” às classes “Fiat” e “Ferrari”, eu posso fazer o seguinte:
Carro[] carros = {new Ferrari(), new Fiat()};
carros[0].buzinar();
carros[1].buzinar();
Veja, eu criei uma Array de Carros, e a populei com uma Ferrari e um Fiat e, depois, fiz ambos buzinarem
Interfaces são muito interessantes, basta entender como elas funcionam. Não sei se fui muito claro, se não fui, avisa
###EDIT
Esqueci de dizer: enquanto extendendo uma classe você escolhe os métodos que quer na sua classe, quando você implementa uma interface você DEVE usar todos os métodos daquela interface ^^
[quote=marciojesus]Consegui entender abstração, polimorfismo, herança e encapsulamento, mas esta dificil para entender Interface…
Alguem tem uma explicação mais clara e direta…muito obrigado.[/quote]
desculpe mas se não entendeu interface não entendeu poliformismo, melhor definição que li:
http://sergiotaborda.javabuilding.com/2011/06/a-heranca-e-a-interface/
Boa noite Marcio, vamos ver se consigo explicar rs.
Bom, herança você já entendeu como funciona, por exemplo:
Um cacahorro é um Animal, ou seja, Cachorro extends Animal. Certo?
public class Cachorro extends Animal {
public void latir(){
System.out.println("Ruu! Ruu!");
}
public void comer(){
System.out.println("comendo...");
}
}
Vamos supor, que além de ser um Animal, seu cachorro é uma animal de estimação e um cão de guarda.
Como você poderia fazer para seu cahorro “herdar” essas funcionalidades. Com a herança não é possível.
É ai que entra a interface.
public interface Pet(){
brincar();
}
public interface CaoDeGuarda(){
guarda();
}
Agora para ser um CãoDeGuarda e um Pet, basta você “assinar” o contrato, sobrepondo os metodos da Interface.
public class Cachorro extends Animal implements Pet, CaoDeGuarda{
guarda(){
System.out.println("Protegendo minha casa");
}
brincar(){
System.out.println("Brincando com as Crianças...");
}
public void latir(){
System.out.println("Ruu! Ruu!");
}
public void comer(){
System.out.println("comendo...");
}
}
Agora seu cachorro é um Animal, Pet e também um CaoDeGuarda.
Se você quiser que seu Gato seja um Pet, basta implementar Pet e assinar o contrato(sobrepondo os métodos de Pet).
Espero ter ajudado ^^
Aqui tem um longo tópico cheio de exemplos sobre isso:
Vários posts.
muito boa a sua explicação andrewop .