Certificação java 5(Livro da Kathy)

10 respostas
T

Comprei o livro da Kathy Sierra Java 5. Muito bom…mas a tradução é cheia defalhas.
Na página 17 temos:
"…chamar call doRooThings() para uma instância de Cloo, da seguinte forma:"
Termina assim!!! Cade o código??

Na página 69 temos:
"…Para ser uma classe de implementação válida, uma classe de implementação não abstrata deve fazer o seguinte:…
*Não declarar exceções existentes em métodos de implementação que não sejam as declaradas pelo método da interface, ou subclasse que não sejam as declaradas por esse método."
Putz…não entendi nadinha de nada…Alguém pode me explicar???

Na página 85 temos:
" Outro ponto a lembrar é que os métodos estáticos não podem ser sobrecarregados."
Não é subscrito??
Bom…tem mais…depois escrevo…

10 Respostas

J
"...Para ser uma classe de implementação válida, uma classe de implementação não abstrata deve fazer o seguinte:... *Não declarar exceções existentes em métodos de implementação que não sejam as declaradas pelo método da interface, ou subclasse que não sejam as declaradas por esse método." Putz...não entendi nadinha de nada....Alguém pode me explicar???

O que quiseram dizer é que uma implementação de um metodo abstrato não pode declarar exceções que o metodo da interface ou superclasse não declara.

tipo isso:

public interface MinhaInterface{
   public void meuMetodo() throws IOException;
}

public class MinhaClasse implements MinhaInterface{
   public void meuMetodo() throws IOException, SQLException{

   }
}
T

Página 313 do livro da Kathy…
"…Daqui a algumas páginas,a Tabela 7-5 listará todos os métodos de List, Set e Map com os quais você deverá estar familiarizado para o exame…"

Alguém sabe me dizer cade a Tabela 7-5 desse livro???Por favor coloquem essa tabela aqui pra nós, quem tiver a versão em inglês,pois no livro em português ela não existe!!!
Obrigado.

V

Tabela 7-5 da página 569 da versão do livro em inglês:

[URL=http://img244.imageshack.us/my.php?image=table75kv8.jpg][/URL]

eltonk

Métodos estáticos podem sim ser sobrecarregados (subclasses e própria classe) e pode ser subscrito (subclasse)…

Quando subscrito ele deve continuar estático… no exemplo abaixo por exemplo não funciona:

public class TesteBlah {

    public static void main(String[] args) {
         A.teste((Object)"obj");
         B.teste(new Integer(1));
         B.teste((Object)"obj2");
    }
}

class A{
    public static void teste(Object o){
        //algo
    }
}

class B extends A{
   // -> Aqui não funciona!!!
    public void teste(Object o){
        //algo diferente
    }
   
   // -> Aqui funcionaria!
   // public static void teste(Object o){
        //algo diferente 2
   // }
    
    public static void teste(Integer I){
        //algo 2
    }
}
V
"eltonk":
"Teixeira10":
Na página 85 temos: " Outro ponto a lembrar é que os métodos estáticos não podem ser sobrecarregados." Não é subscrito??

Métodos estáticos podem sim ser sobrecarregados (subclasses e própria classe) e pode ser subscrito (subclasse)...

To errado?!


Na verdade ele não é subscrito e sim redefinido, certo?
A diferença é que um método subscrito pode ser utilizado o polimosfismo.

Animal a = new Dog(); 
a.eat();
Se o código for o seguinte a saída é "dog":
class Animal {
    public void eat() {
        System.out.println("animal");
    }
}

class Dog extends Animal {
    public void eat() {
        System.out.println("dog");
    }
Agora, usando o método estático a saída será "animal"
class Animal {
    public static void eat() {
        System.out.println("animal");
    }
}

class Dog extends Animal {
    public static void eat() {
        System.out.println("dog");
    }

Quanto a sobrecarregar não tem problema.

eltonk

confirmou minha resposta…
No livro versão inglês, é isso mesmo que está escrito?

V

“eltonk”:
confirmou minha resposta…
No livro versão inglês, é isso mesmo que está escrito?

Acho que frase que ele citou que está incorreta em portugês é essa:
“Finally, remember that static methods can’t be overridden! This doesn’t mean they
can’t be redefined in a subclass, but redefining and overriding aren’t the same thing.”

eltonk

Agora sim… Tudo faz sentido :grin:

T

Na pp.85 e 86 temos…

"Vejamos um exemplo de método estático redefinido(lembre-se, não subscrito):

1  class Animal{

2     static void doStuff(){

3        System.out.print("a ");

4      }

5  }

6

7  class Dog extends Animal{

8    static void dostuff(){

9       System.out.print("d ");

10 }


Redefinir é colocar uma pequena alteração no método, como na linha 8, onde o método doStuff() é escrito com um "s" minúsculo dostuff()?

Ou houve outro erro de tradução???
V

Na versão em inglês está assim também. Mas provavelmente é um erro de digitação mesmo, pois redefinir é apenas declarar um método com o mesmo nome na subclasse o qual não pode ser considerado como subscrito(override) porque é estático e não pode ser utilizado com polimorfismo.

Tem uma discução interessante sobre o assunto neste link: http://forum.java.sun.com/thread.jspa?threadID=765529&messageID=4365396

Criado 3 de agosto de 2006
Ultima resposta 18 de set. de 2006
Respostas 10
Participantes 4