class Pai { int a; Pai(int a) {this.a=a;} void z(){a=1;} } class Filho extends Pai { int b; Filho(int a, int b) { super(a); // construtor da classe Pai. Obs: Pai(a) não funciona this.b=b; } void z(){a=2;} } class Neto extends Filho { int c; Neto(int a, int b, int c) { super(a,b); // construtor da classe Filho. // Obs: indiretamente o construtor da classe Pai será utilizado // porém não existe forma de acesso direto a ele. this.c=c; } void z(int a){ super.z(); // faz o atributo a valer 2 // Obs: não existe forma de acesso ao método z() da classe Pai super.a = super.a+a; // soma o parâmetro a ao atributo a (comum às 3 classes) } }