-Tentar acessar um método de um objeto que não existe:
Exemplo: Defina em Java a classe Cliente cujos objetos são clientes de uma empresa telefônica; os clientes têm nome e endereço (rua,num). Defina também a operação rua que retorna a rua onde um determinado cliente reside.
Errado:
class Endereco { private String rua; private String num; public String rua() { return rua; } } class Cliente { String nome; Endereco end; String rua() { return (end.rua()); //Estou tentando acessar um objeto // que eu não sei se existe } }
class Cliente{ . . String rua() { String temp=" "; if(end != null) // assim eu tenho certeza de que o objeto existe temp = end.rua(); return temp; // o return deve vim no fim do método } }
class Cliente{ . . Cliente (String n) { nome = n; end = new Endereco (); } // Assim, eu tenho certeza de que toda vez que eu crio o objeto Cliente, eu // crio tambem o objeto Endereco e então posso acessá-lo String rua() { return (end.rua()) } }
- Usar um tipo como um objeto:
Errado:
char a = null; //ou int i = null;"char" e "int" são tipos e não objetos. Os objetos são "Character" e "Integer", que podem ser criados através dos tipos.
Por exemplo, String é um objeto, logo, o código abaixo está
String str = null;
class ConjA { . . . void insere(int a){ ... } . . . } class ConjB extends ConjA { int x =0; . . void reinsere () { super.insere(x); //ERRO, pois o método "insere" pertence à classe //ConjB por herança e, portano, não é necessário //escrever "super.insere(x)", basta colocar "insere(x)". //Só quando houver overriding de um método é que se //escreve com "super.".
Errado:
boolean procura (int elem) { if (elem == 0) return true; else return false; }Certo:
boolean procura (int elem) { boolean retorno = false; if (elem == 0) retorno = true; else retorno = false; return retorno; }
Errado:
Ex: String str = "teste"; String str1 = str.clone();//errado, pois como o método clone() pertence à classe //Object,(classe que todas as outras classes são filhas) //é preciso um "cast" para especificar que é um clone de //um String, nesse caso particular.
Certo:
String str = "teste"; String str1 = (String)str.clone();
public class DadosPessoais {-Mal Uso do Atributo Private:
Ao se criar um atributo privado em uma classe
, é aconselhável criar formas de acesso a este atributo,
tanto para leitura quanto para escrita, a não ser que ele seja
usado apenas para controle interno da classe.
O código abaixo, por exemplo, compila sem acusar erro nenhum,
mas não serve para absolutamente nada,ou seja, nenhuma outra classe pode
acessá-lo, nem eles estão sendo usados por sua própria classe.
private long identidade;
private String cpf;
private String Endereco;
private int anoNascimento;
}
-Colocar Atributos Numa Classe que não Pertencem a Ela:
saldoTotal
, pois ele (deveria) ser
exatamente igual ao saldo!
Luciano Barbosa (lab@di.ufpe.br) |