Dúvida básica

8 respostas
Jaison

olá pessoal queria q vc’s me respondesse qual a diferença entre essas duas assinaturas:

public Livro desempilha(){}

e:

public void desempilha(Livro l){}

o public void desempilha eu sei q não tem retorno, e o public Livro desempilha, será porque ele tem um retorno?

abraços!

8 Respostas

Fabricio_Cozer_Marti

pra que esse negrito todo na sua pergunta ?

Jaison

que diferença faz! :smiley:
com ou sem negrito, a pergunta ta ali! :smiley:

W

Jaison:
olá pessoal queria q vc’s me respondesse qual a diferença entre essas duas assinaturas:

public Livro desempilha(){}

e:

public void desempilha(Livro l){}

o public void desempilha eu sei q não tem retorno, e o public Livro desempilha, será porque ele tem um retorno?

abraços!

Cara,

o public Livro desempilha(){} vai desempilhar o ultimo objeto do tipo Livro da sua suposta Pilha.

o public void desempilha(Livro l) vai desempilhar exatamente o objeto do tipo Livro de nome l enviado como parâmeto da sua suposta Pilha.

B

public Livro desempilha(){}
Não pega nenhum argumento e retorna uma referência a um objeto da classe Livro, né isso ?

andrik

bom não entendi bem a sua dúvida, mas vou responder pelo que entendi

no primeiro método:
é um método público então pode ser utilizado por qualquer classe, claro fazendo o devido import, o método retorna um instância da classe Livro

no segundo método:
tbm é público então é a mesma regra do anterior, e esse método não retorna nada, ele recebe um Livro como parâmetro e executa a sua lógica

pelo que eu imagino, o primeiro método retira um livro da sua “pilha” e o retorna para quem chamou esse método e o segundo ele recebe um livro como parâmetro e o tira da “pilha”, se for isso realmente vc deve dar uma revisada nesses métodos pois se for uma pilha realmente ela deve funcionar no sistema (LIFO) (Last In First Out) (último a entrar é o primeiro a sair) então não teria sentido de vc desempilhar um item específico, vc vai desempilhando conforme tem itens no topo da pilha

espero te ajudado qualquer coisa posta ae

danieldestro

Galera, não entendi como tiraram as conclusões sobre as possíveis implementações destes métodos. Temos muitas Mãe Dinah por aqui.

Enfim...

Respondendo a questão do amigo.

Você tem dois métodos com o mesmo nome, porém com assinaturas diferentes. Isso é chamado de overloading (sobrecarga) de métodos.

Em Java é possível ter métodos com nomes iguais e argumentos e retornos diferentes.

Só é possível ter retornos diferentes se os métodos têm argumentos diferentes.

Ex:

public void aaa() { ... }

public int aaa( int b ) { ... }

Isto já NÃO pode:

public void aaa() { ... }

public int aaa() { ... }
peczenyj

para emular um método com varios tipos de retorno, ele pode retornar um objeto e dentro usar um if junto com instance of, não ?

danieldestro

Não sei se isso é EMULAR… mas pode usar a hierarquia de classes (herança) para fazer isso sim:

public Object foo( int bar ) { if( bar < 0 ) return new String("Negativo"); else if( bar == 0 ) return new Integer(0); else return new Long(bar); }

E depois:

Object o = foo( 10 ); if( o instanceof String ) { System.out.println( o ); } else { //faça algo com "o" }

È um exemplo besta, mas pode:

Criado 7 de junho de 2006
Ultima resposta 7 de jun. de 2006
Respostas 8
Participantes 7