Duvida boba Orientação a objetos

16 respostas
H

Minha duvida é quanto a orientação a objetos. é o seguinte.

Tenho as seguintes classes

public class PrivateMsg implements IUsuarios{ // ta implementando os métodos da interface usuarios (certo?)

// metodos

}
public class WantHave implements IUsuarios{

// metodos

}
interface IUsuarios{

// metodos sem corpo, sendo implementados pela classe PrivateMsg e WantHave( certo? )

}

class Usuarios extends IUsuarios{ // ta dando erro aqui, eu posso fazer isso?

}

to usando php, mas a duvida é orientação a objetos ( php nao tem herança multipla )

16 Respostas

rafaelsantini

IUsuarios é uma interface, então, em vez de estender (extends), você deve implementar (implements).

H

o problema é que eu quero que a classe usuario herde as propriedades da classe WantHave e PrivateMsg.

thegoergen

Uma classe não pode herdar de uma interface, precisa implementá-la.

L

quando vc extende (extends) é que está herdando de uma outra classe , não interface…

então vc não pode fazer uma classe extender de uma interface…
o que vc pode fazer e uma classe implementar uma interface

thegoergen

Você quer herança múltipla?? isso não é possível em Java…

H

entao pra q serve interface se nao posso instancia-la ?

L

Dá uma lida aqui … http://www.guj.com.br/java.tutorial.artigo.123.1.guj

netShot

Retirado da apostila do curso FJ11 - Caelum


Uma interface pode definir uma série de métodos, mas nunca conter implementação deles. Ela só expõe
o que o objeto deve fazer, e não como ele faz, nem o que ele tem. Como ele faz vai ser definido em uma
implementação dessa interface

Da uma lida na apostila

thegoergen

Bem… interface funciona justamente como uma interface :lol: , ou seja, uma capa que mostra os métodos que a classe que a implementa possui… Você instancia as calsses, não a interface.

J

Deixe mais claro o que pretende fazer

q pode ser q te ajude!

H

quero fazer com que a classe Usuarios herde os metodos da classe WantHave e da classe PrivateMsg só isso, mas como não tem herança multipla nao to sabendo resolver =).

ai achei que se implementasse os metodos de uma interface, funcionaria como uma gambiarra pra uma herança multipla.

ramilani12

Se vc quer estender a classe IUsuarios prq não torna-la abstrata?
Qndo vc define interface e as classes concretas que irao implementar essa interface estão praticamente fechando um contrato com a Interface ou seja vc deverá implementar todos os metodos…

Luiz_Aguiar

Tu podes implementar mais de uma interface :wink:

djrada

d

M

Cara vc pode fazer o seguinte…

Se você criar uma interface única para suas duas classes PrivateMsg e WantHave você poderá ter métodos desnecessários em uma classe, a não ser que as duas classes implementem os mesmo métodos mesmo e somente alguns métodos a mais, pois uma Interface determina que sua classe vai ser daquele tipo, no seu caso, do tipo IUsuarios, e quando você for implementá-la você terá que criar todos os métodos contidos no corpo dela, é uma condição que ela impõe pra que você posso utiliza-la. Você pode utilizar essa solução, acredito que resolva seu problema.

public class PrivateMsg implements IPrivateMsg {

// metodos

}
public class WantHave implements IWantHave {

// metodos

}
interface IWantHave {

// metodos referentes à WantHave

}
interface IPrivateMsg {

// metodos referentes à PrivateMsg

}
class Usuarios implements IPrivateMsg, IWantHave {

// Aqui você deverá criar todos os métodos contidos nas interfaces IWantHave e IPrivateMsg

}

:smiley: Espero ter ajudado, caso não tenha sido claro, seria legal se você colocasse qual a sua real necessidade
para que pudessemos ajudá-lo melhor.

Até mais, abraços…

thinet

Sou novato em java e OO também, mais gostaria de contribuir.

Eu entendo a utilidade da interface mais ou menos assim:

Imagine um desenvolvimento em grupo, você vai definir uma tela de login, então você entra em acordo que deve existir um username e uma senha, ai se subdivide as tarefas entre vários colaboradores (uma equipe) como você garante que todos vão implementar dessa forma o login?

Com as interfaces, quando você cria uma interface você define uma forma padrão de algo ser implementado, então todas as classes que implementarem a interface, obrigatoriamente terão de seguir aquele padrão que você definiu na interface (o contrato)

Bom, espero ter ajudado, e se algo descrito estiver errado, por favor me corrijam.

Criado 9 de maio de 2008
Ultima resposta 12 de mai. de 2008
Respostas 16
Participantes 11