Oi…
sei que é uma duvida muito basica… ams o livro nao explica direito…
quando exatamente devo usar EXTENDS e IMPLEMENTS em uma classe que criei??
:?: :?: :?: :?: :?: :?: :?: :?: :?:
Oi…
sei que é uma duvida muito basica… ams o livro nao explica direito…
quando exatamente devo usar EXTENDS e IMPLEMENTS em uma classe que criei??
:?: :?: :?: :?: :?: :?: :?: :?: :?:
Decore isto aqui:
class ClasseFilha extends ClassePai implements Interface1, Interface2, Interface3
ok… so nao ficou mt claro o implements…
Um exemplo em que você utiliza implements e interfaces são, por exemplo, naquelas classes que lidam com conexão SQL.
Na interface você define um contrato dizendo que qualquer classe que a implementar vai ter que escrever os métodos definidos.
Utilizando o exemplo de SQL, você tem vários tipos de bancos de dados: SQL Server, MySQL, Oracle, etc. Cada fabricante teve que implementar os seus pacotes para fazer a conexão, mas todos tem os mesmos métodos: connect, close, etc.
Já pensou se cada fabricante fizesse um método para conectar de nome diferente? Ia ser uma zona, não é mesmo? Por isso usaram interfaces.
ta… entao eu uso implements pra implementar na minha classe um conjunto de metodos ja pre-definidos?
entao… nao seria a mesma coisa do extends???
:?: :?: :?: :?: :?: :?:
Uma interface parece uma classe, porém não tem código, isto é, só tem nomes de métodos e modificadores, basicamente.
Vc vai implementar uma classe quando precisar de algum recurso referente a esta classe.
Por exemplo, a interface ‘Comparable’ possui um metodo chamado compareTo que vc vai precisar implementar. Pra que isso ? caso vc tenha um vetor ou arraylist de objetos pertencentes a tua classe, vc pode ordena-los com o método sort.
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Comparable.html
É um exemplo. Normalmente no inicio não lidamos com interfaces até fazer bastante exercicio sobre isso.
Você usa o extends para herança direta de uma classe. Por exemplo:
class Elefante extends Animal {}
class Chimpanze extends Animal {}
E o implements para implementar interfaces:
class Elefante extends Animal implements Quadrupede, Herbivoro {}
class Chimpanze extends Animal implements Bipede, Saltitante {}
Uma regra geral é de que herança (extends) implica em reuso de código comum a classes de uma mesma hierarquia e implementações (implements) implicam em distribuição de comportamentos. Por exemplo, todo Animal tem um DNA, não importando se ele é um Elefante, um Chimpanze, um Salmao ou uma Cobra. Mas, como Chimpanze implementa Saltitante, assim como BonecoDoPulaPirata também implementa Saltitante, isso significa que eu posso esperar que os dois tenham o método saltar(). Mas cada um faz de um jeito diferente.
Em código:
class Animal {
// ...
public DNA getDNA() {
// Código absurdamente complicado para extrair o DNA deste Animal,
// que acabará servindo para praticamente todas as subclasses de Animal,
// exceto talvez a subclasse de Humano chamada Mutante (X-Men 3 vai estréia sexta :)
}
//...
}
interface Saltitante {
// Métodos em interfaces não têm implementação, as classes que as implementam
// que devem implementar estes métodos.
// Assim, cada Saltitante salta de uma maneira específica.
void saltar() ;
}
class Chimpanze extends Animal implements Saltitante {
// ...
void saltar() {
// implementa a capacidade de saltar, que todo Saltitante deve ter
}
}
class BonecoDoPulaPirata extends Brinquedo implements Saltitante {
// ...
void saltar() {
// implementa a capacidade de saltar, que todo Saltitante deve ter
}
}
Estude Programação Orientada a Objetos para entender este e outros conceitos.
Quando você tem uma classe que implementa a interface, você é obrigado a escrever o método que está definido na interface dentro da classe, mesmo que dentro deste método não haja código nenhum.
Se você fizer um extends não é obrigado a escrever o método na classe, a não ser que a superclasse seja abstrata.
Outro exemplo clássico é aquele que mostra o super-homem, o homem, o mamífero e o voador.
O homem é descendente do mamífero, mas e o super-homem? Ele possui as características de algo que voa (voador) e também do homem, mas como representar isso em Java? Implements seria também uma forma de colocar disfarçadamente em Java uma “herança múltipla”, que é possível em outras linguagens.
Ah, ok ok
perfeita explicaçao #@®®¡$ e Roger75, obrigada mesmo, agora entendi perfeitamente!!!
obrigada!!!
[quote=Roger75]Outro exemplo clássico é aquele que mostra o super-homem, o homem, o mamífero e o voador.
O homem é descendente do mamífero, mas e o super-homem? Ele possui as características de algo que voa (voador) e também do homem, mas como representar isso em Java? Implements seria também uma forma de colocar disfarçadamente em Java uma “herança múltipla”, que é possível em outras linguagens.
[/quote]
Não exatamente, o Super-Homem é alienígena. (o filme dele estréia em junho, acho)
OK, ok, já viajei demais, hehehe
Parabéns Roger um ótimo exemplo!
Olá gente, vi essa página sobre interface e herança bom, talvez vcs pudessem me ajudar a organizar um programa. A ideia é a seguinte: Eu tenho uma classe INTERCONEXÃO. Essa interconexao ela pode ser uma LINHA ou um TRANSFORMADOR. Bem INTERCONEXAO contem elementos como DE, PARA dentre outros. LINHA tem alguns paramentos e TRANSFORMADOR outros.
Alem disso uma interconexão pode possuir CARGA, REGULADOR, BANCO_CAPACITOR que sao outras classes tbm. Nao necessariamente tem todas ou só um. depende de cada interconexão.
Por fim, eu tenho uma classe chamada alimentador que tera um vetor de INTERCONEXÕES. A medida que le um banco de dados ou um arquivo ele vai decidir se vai ser LINHA ou TRANSFORMADOR e se vai ter CARGA e/ou REGULADOR e/ou BANCO_CAPACITOR.
Por favor me deem ideias. de como implemente hierarquia me ajudariam nisso
Após ler algumas dicas sobre interface, senti uma dúvida.
Se alguém puder me ajudar, gostaria de saber a diferença entre uma classe abstrata (superclasse) e interface.
Pq a classe filha obrigatoriamente terá que implementas os métodos da classe pai, uma vez que, ela é abstrata, qual a difereça se criarmos uma interface ?
:?:
A classe só pode ter uma classe mãe, então com a interface a classe vai ficar livre para extender outra classe
Se puder escolher entre classe abstrata e interface, escolha a interface.
Muito obrigada!!!
Obrigada!!!