Galera, alguém poderia me explicar esse código ai.
[code]public class ClasseDeExcecao extends Exception {
public ClasseDeExcecao() {
super("Causa: Desconhecida"); // O que esse super faz ou está fazendo nessa linha de código?
}
//
public ClasseDeExcecao(String messagem) { // aqui tbm não entendi. isso é um outro construtor?
super(messagem);
}
Sim, aquilo ali embaixo é um outro construtor. Você pode ter N construtores para a mesma classe.
Quanto à primeira, se não me engano, se alguém tentar construir a classe sem passar parâmetros, ela chama a classe pai e manda uma mensagem de erro para o usuário.
[quote=david.jv]Galera, alguém poderia me explicar esse código ai.
[code]public class ClasseDeExcecao extends Exception {
public ClasseDeExcecao() {
super("Causa: Desconhecida"); // O que esse super faz ou está fazendo nessa linha de código?
}
//
public ClasseDeExcecao(String messagem) { // aqui tbm não entendi. isso é um outro construtor?
super(messagem);
}
}[/code][/quote]
o super indica que vc vai usar o metodo da classe pai…
no caso, vc esta usando o construtor da classe Exception…
um dos construtores do Exception aceita uma String como parametro…
o segundo construtor… é um overload (sobrecarga) do construtor da sua classe…
indica que vc tem um segundo meio de instanciar a classe, no caso, passando um parametro para usar no construtor da classe pai…
Vamos imaginar que você tenha uma Classe que só pode ser instanciada com parâmetros.
Exemplo: [code]public class Pessoa {
int idade;
String nome;
// construtor com dois parâmetros
public Pessoa(int idade, String nome){
this.idade = idade;
this.nome = nome;
}
// construtor com 1 parâmetro
public Pessoa(int idade){
this.idade = idade;
}
// construtor com OUTRO parâmetro
public Pessoa(String nome){
this.nome = nome;
}
Getters e Setters...
}[/code]Se alguém tentar criar uma Pessoa pessoa = new Pessoa() vai dar pau; só aceita construir a classe Pessoa com a passagem de pelo menos um parâmetro.
Regra do Java: se você não criar nenhum construtor para a classe, automaticamente é criado um construtor sem parâmetros.
[code]public Cliente getCliente() throws ClasseDeExcecao {
Cliente cliente = null;
int linhaSelecionada = tClientes.getSelectedRow();
if (linhaSelecionada < 0) {
throw new ClasseDeExcecao(“Não foi selecionado nenhum sócio”); // nessa linha ele chama o segundo construtor e passa para o construtor da classe pai, correto?
public Cliente getCliente() throws ClasseDeExcecao { //Perceba que aqui ele diz que se der algum pau, é pra lançar a Exceção ClasseDeExcecao
Cliente cliente = null;
int linhaSelecionada = tClientes.getSelectedRow();
if (linhaSelecionada < 0) {
throw new ClasseDeExcecao("Não foi selecionado nenhum sócio"); //E aqui ele lança realmente a ClasseDeExcessao, passando os parâmetros que ela requisita
}
...
[/quote]
[code]public Cliente getCliente() throws ClasseDeExcecao {
Cliente cliente = null;
int linhaSelecionada = tClientes.getSelectedRow();
if (linhaSelecionada < 0) {
throw new ClasseDeExcecao(“Não foi selecionado nenhum sócio”); // nessa linha ele chama o segundo construtor e passa para o construtor da classe pai, correto?
Valeu galera, excelentes explicações.
O primeiro código tá entendido, agora eu queria que vocês me ajudassem a entender esse aqui:
A única coisa que eu sei sobre esse código é que ele limita caracteres em JText field …
[code]public class LimitaCaracter extends PlainDocument { // o que é esse PlainDocument?
private int iMaxLength;
public LimitaCaracter(int maxlen) {
super(); // O super aqui tem a " mesma função" do super do outro código, ou melhor dizendo está acionando o construtor da super classe (PlainDocument)?
iMaxLength = maxlen;
}
@Override
public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException { // Aqui eu não entendi quase nada, tipo esse AttributeSet faz o que? e esse BadLocationException ?
if (str == null) {
return;
}
if (iMaxLength <= 0)
{
super.insertString(offset, str, attr); // Aqui eu não entendi nada
return;
}
int ilen = (getLength() + str.length()); //aqui tbm não entendi nada. Tipo, de onde ele tirou esse getLength
if (ilen <= iMaxLength)
super.insertString(offset, str, attr); // aqui o super está fazendo o que?
}