Uma de construtores

6 respostas
marciolx
class Base {
	public void Base() {
		System.out.println ("Base - 1");
	}
	public Base() {
		System.out.println ("Base - 2");
	}
}

class Sub extends Base {
	public void Sub() {
		System.out.println ("Sub - 1");
	}
	public Sub() {
		System.out.println ("Sub - 2");
		super.Base();
	}
}

public class Teste {
	public static void main (String [] args) {
		Base b = new Sub();
	}
}

a - não compila
b - compila e roda, e lança runtime exception
c - compila, roda e imprime Base - 1, Base - 2. Sub - 2
d - compila, roda e imprime Base - 2, Base - 1. Sub - 2
e - compila, roda e imprime Base - 2, Sub - 2. Base - 2
f - compila, roda e imprime Base - 2, Sub - 2. Base - 1
g - nenhuma das anteriores

6 Respostas

Betinhum

Acho q a resposta é letra a, pq o construtor da classe base (caso seja chamada) tem q ser chamado na primeira linha do construtror da classe derivada.

public Sub() { 
      System.out.println ("Sub - 2"); 
      super.Base(); 
   }

Acertei? :?:

marciolx

“Betinhum”:
Acho q a resposta é letra a, pq o construtor da classe base (caso seja chamada) tem q ser chamado na primeira linha do construtror da classe derivada.

public Sub() { 
      System.out.println ("Sub - 2"); 
      super.Base(); 
   }

Acertei? :?:

não, olhe de novo, a chamada ao construtor da classe base seria desse modo:

super();

do jeito que está:

super.Base();

eu NÃO estou chamando o construtor, mas sim um método da classe Base que por coincidência (ou não :wink: ) tem o mesmo nome da classe

Betinhum

Pô! Acho q já sei a resposta, mas modo tentativa é f***! :oops:

Posto?

marciolx

“Betinhum”:
Pô! Acho q já sei a resposta, mas modo tentativa é f***! :oops:

Posto?

claro, manda!

Betinhum

letra f?

Construtor da base
Construtor da derivada
Função da base

marciolx

“Betinhum”:
letra f?

Construtor da base
Construtor da derivada
Função da base

isso mesmo, você acertou!

a pegadinha aqui foi usar um método com o mesmo nome da classe para tentar confundí-lo com um construtor. Isso apesar de estranho, mas é perfeitamente legal.

Criado 4 de setembro de 2003
Ultima resposta 4 de set. de 2003
Respostas 6
Participantes 2