Galera, alguém poderia me explicar esse código ai.
publicclassClasseDeExcecaoextendsException{publicClasseDeExcecao(){super("Causa: Desconhecida");// O que esse super faz ou está fazendo nessa linha de código?}//publicClasseDeExcecao(Stringmessagem){// 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.
D
david.jv
como assim, construir uma classe sem passar parâmentros?
ctdaa
linha 05: super(“Causa: Desconhecida”);
Aqui está acionando o construtor da super classe, ou seja “Exception” -> ClasseDeExcecao extends Exception
linha 09: é um construtor com outra assinatura. Assim você pode criar sua ClasseDeExcecao sem parâmetros ou com parâmetros: (String mensagem)
D
david.jv
Agora eu entendi. Vlw
alucardeck
david.jv:
Galera, alguém poderia me explicar esse código ai.
publicclassClasseDeExcecaoextendsException{publicClasseDeExcecao(){super("Causa: Desconhecida");// O que esse super faz ou está fazendo nessa linha de código?}//publicClasseDeExcecao(Stringmessagem){// aqui tbm não entendi. isso é um outro construtor?super(messagem);}}
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...
jaboot
Vamos imaginar que você tenha uma Classe que só pode ser instanciada com parâmetros.
Exemplo:
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.
D
david.jv
Só para confirmar:
Outra classe:
publicClientegetCliente()throwsClasseDeExcecao{Clientecliente=null;intlinhaSelecionada=tClientes.getSelectedRow();if(linhaSelecionada<0){thrownewClasseDeExcecao("Não foi selecionado nenhum sócio");//nessalinhaelechamaosegundoconstrutorepassaparaoconstrutordaclassepai,correto?}...
jaboot
david.jv:
Só para confirmar:
Outra classe:
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
}
...
S
samykzy
david.jv:
Só para confirmar:
Outra classe:
publicClientegetCliente()throwsClasseDeExcecao{Clientecliente=null;intlinhaSelecionada=tClientes.getSelectedRow();if(linhaSelecionada<0){thrownewClasseDeExcecao("Não foi selecionado nenhum sócio");//nessalinhaelechamaosegundoconstrutorepassaparaoconstrutordaclassepai,correto?}...
sim, é isso ai mesmo...
D
david.jv
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 ...
publicclassLimitaCaracterextendsPlainDocument{// o que é esse PlainDocument?privateintiMaxLength;publicLimitaCaracter(intmaxlen){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;}@OverridepublicvoidinsertString(intoffset,Stringstr,AttributeSetattr)throwsBadLocationException{// 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 nadareturn;}intilen=(getLength()+str.length());//aqui tbm não entendi nada. Tipo, de onde ele tirou esse getLengthif(ilen<=iMaxLength)super.insertString(offset,str,attr);// aqui o super está fazendo o que?}}