Duvida boba Orientação a objetos

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 )

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

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

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

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

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

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

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

Retirado da apostila do curso FJ11 - Caelum

[quote]
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[/quote]

Da uma lida na apostila

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.

Deixe mais claro o que pretende fazer

q pode ser q te ajude!

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.

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…

Tu podes implementar mais de uma interface :wink:

d

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…

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.