Sistemas de informação
Conceitos Básicos abordados pelo Professor: Construtores em cascata e a utilização de “super”. Noções gerais de Acessibilidade – Public, Protected, Private, métodos “get...” e “set...”. Exemplo A: Arquivo A.java: import javax.swing.*; public class A { public A() { JOptionPane.showMessageDialog(null, "Passei pelo construtor da classe A!"); } }
Exemplo B: Arquivo B.java: import javax.swing.*; public class B extends A { public B() { JOptionPane.showMessageDialog(null, "Passei pelo construtor da classe B!"); } }
Exemplo C: Arquivo C.java: import javax.swing.*; public class C extends B { public C() { JOptionPane.showMessageDialog(null, "Passei pelo construtor da classe C!"); } }
Exemplo D: Arquivo Prog.java: import javax.swing.*; public class Prog { public static void main(String args[]) { C obj = new C(); System.exit(0); } }
Observações: 12Ao se executar Prog, os construtores de cada classe foram acionados NA ORDEM de ascendência no modelo de classes; Mas, o que acontece quando há uma herança, porém o construtor padrão (sem parâmetros) é substituído por um outro construtor, com parâmetros? Por exemplo: import javax.swing.*; public class B extends A { int atr ; //atributo qualquer public B( int x) { atr = x; JOptionPane.showMessageDialog(null, "Passei pelo construtor da classe B!"); } }
Ao se executar Prog, há um erro, porque o construtor padrão da classe B foi chamado e ele não existe mais! Para "consertar" isto, incluir o "super" na classe C. A função do "super" é executar o construtor da classe imediatamente ascendente! A seguir, como deve ficar o código da classe C: import javax.swing.*; public class C extends B { public C() { super(20); //costrutor da classe B, com valor 20 JOptionPane.showMessageDialog(null, "Passei pelo construtor da classe C!"); } }