| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2006 05:44:07
|
cu_ringa
Virtual Machine Man
![[Avatar]](/images/avatar/d72fbbccd9fe64c3a14f85d225a046f4.png)
Membro desde: 27/08/2003 00:19:11
Mensagens: 602
Localização: Natal-RN
Offline
|
no final da pag 85 do livro SCJP(portugues) da kathy sierra ela fala q metodos estaticos não podem ser sobrecarregados. mas podem ser redefinidos. bem eu fiz esse codigo e ele deu certo. Nesse exemplo tanto o metodo A é subscrito como sobrecarregado. Ou estou errado?
qm tiver o livro e poder da uma olhadinha p me ajudar eu agradeço.
|
"O que levamos desta vida, é a vida que a gente leva". |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2006 15:18:15
|
LPJava
GUJ Hacker
Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline
|
bom n to com livro agora mais acho q ela fala que nao pode ser sobrecarreado por um metodo nao static nao é isso nao? pq ai vc tem um subscrito e um metodo sobrecarregado!! e lembre-se static so pode chamar static!! mais vou olhar a pg.. e posto novamente..
|
Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/12/2006 14:00:25
|
fernandoinfo
Smalltalk
Membro desde: 15/09/2006 17:54:27
Mensagens: 1
Offline
|
A problema é que o método:
public static void A(int i){
System.out.println("B");
}
Não esta sendo sobrecarregado ele é simplesmente um novo metodo criado
na classe B.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/12/2006 16:05:02
|
absolution
Debugger
Membro desde: 31/03/2006 11:32:15
Mensagens: 73
Offline
|
A mesma coisa eh para o metodo A() sem argumentos. Se vc fizer o seguinte:
sera impresso "A" duas vezes! Isso pq metodos static sao definidos em tempo de compilacao e nao sao sobrescritos!
se o metodo A() nao fosse static a resposta mudaria para:
A
B
ae galera! espero ter ajudado!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/12/2006 01:12:57
|
oalexandrino
Thread.start()
Membro desde: 08/08/2005 09:20:24
Mensagens: 45
Localização: Recife - PE
Offline
|
Sobre sobrecargas de métodos estaticos prestem atençao!
As AFIRMATIVAS ao redor do exame:
1) Métodos estáticos NÃO podem ser sobrecarregados!
Quando você tem um método estatico na subclasse que tem a mesma assinatura de um método estatico na classe Super ele NÃO é uma sobrecarga, o que ele faz é OCULTAR o método da super!
Não estou estudando em portugues, assim to enviando várias regras, em Ingles, sobre esse assunto que pega muita gente!
about overriding !
1) A static method of a subclass hides--but does not override--an accessible superclass method with the same signature;
2) A compile-time error is generated if a subclass contains a declaration of an instance method that shares the same signature as an accessible static method of the superclass;
3) A subclass can override a concrete implementation of a method with an abstract method declaration;
4) The modifiers, synchronized, native and strictfp, specify implementation details that the programmer is free to change in a subclass.
- If a superclass method is synchronized, then the overriding method may or not be synchronized;
- If a superclass method is native, then the overriding method may or not be native;
- If a superclass method is strictfp, then the overriding method may or not be strictfp;
5) A subclass method may not have weaker access than the overridden superclass method;
6) A subclass method can provide greater access than a superclass method;
|
Olavo Alexandrino
MCP / SCJP 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/12/2006 06:12:17
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Online
|
cuidado: voces estao errando os termos sobrecarregado e sobrescrito
sobrecarrego é overload e sobrescrito é override! voces estao falando o contrario!
metodos estaticos PODEM ser overloaded, mas nao ha sentido em falar de override de metodos estaticos (ja que nao ha uma instancia para poder falar em invocacao virtual de metodo)
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/12/2006 09:52:26
|
mister__m
Virtual Machine Man
![[Avatar]](/images/avatar/89b9c689a57b82e59074c6ba09aa394d.jpg)
Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline
|
Paulo Silveira wrote:metodos estaticos PODEM ser overloaded, mas nao ha sentido em falar de override de metodos estaticos (ja que nao ha uma instancia para poder falar em invocacao virtual de metodo)
Ou pondo de outra forma: overriding/sobrescrita tem a ver com polimorfismo e polimorfismo soh existe com instancias.
|
Michael Nascimento Santos, aka Mister M
Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/12/2006 10:39:59
|
oalexandrino
Thread.start()
Membro desde: 08/08/2005 09:20:24
Mensagens: 45
Localização: Recife - PE
Offline
|
Paulo Silveira wrote:cuidado: voces estao errando os termos sobrecarregado e sobrescrito
sobrecarrego é overload e sobrescrito é override! voces estao falando o contrario!
metodos estaticos PODEM ser overloaded, mas nao ha sentido em falar de override de metodos estaticos (ja que nao ha uma instancia para poder falar em invocacao virtual de metodo)
De fato!
Corrigindo
1) Métodos estáticos NÃO podem ser SOBRESCRITOS!
Quando você tem um método estatico na subclasse que tem a mesma assinatura de um método estatico na classe Super ele NÃO é um OVERRIDEN, o que ele faz é OCULTAR o método da super!
|
Olavo Alexandrino
MCP / SCJP 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/12/2006 11:42:18
|
jaboot
Virtual Machine Man
Membro desde: 01/07/2005 14:25:37
Mensagens: 749
Localização: São Paulo
Offline
|
oalexandrino wrote:Quando você tem um método estatico na subclasse que tem a mesma assinatura de um método estatico na classe Super ele NÃO é um OVERRIDEN, o que ele faz é OCULTAR o método da super!
Então a resposta para esta questão é "AB" ?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/12/2006 14:21:27
|
oalexandrino
Thread.start()
Membro desde: 08/08/2005 09:20:24
Mensagens: 45
Localização: Recife - PE
Offline
|
SIM!
Mas se quiser fazer mais testes
Troque o codigo do construtor por esse:
Voce verá, na ultima instanciacao, que o metodo chamado SEMPRE sera o da classe A, diferentemente se os metodos fossem metodos de instancia ao inves de estaticos.
|
Olavo Alexandrino
MCP / SCJP 5.0 |
|
|
 |
|
|