Fala pessoal, me deparei com este exercício em um simulado Whizlabs.
Achei bem capcioso e difícil. Envolve conceitos de OO, como sobrecarga, polimorfismo…
Para quem esta estudando para SCJP ou quer testar seus conhecimentos execute e confira a saída.
[]'s
class SuperBase {
void print(SuperBase s) {
System.out.println("Super");
}
}
class Base extends SuperBase {
void print(Base b) {
System.out.println("Base");
}
}
class Derived extends Base {
static void print(Derived d) {
System.out.println("Derived");
}
}
class Test {
public static void main(String [] args) {
SuperBase a1 = new SuperBase();
SuperBase b1 = new Base();
Base c1 = new Derived();
Derived d1 = new Derived();
a1.print(new Base());
b1.print(new Derived());
c1.print(new Derived());
d1.print(new Derived());
}
}
ta cheio de questao assim no whizlabs ehhe eu tava errando bastante tive que volta ao cap 1 e cap 2… acho q se tivesse me dedicado bastante a esses cap nao taria errando tanto… podem acreditar… que as pegadinhas ta mais entre cap 1 ate o cap 5 do livro da kathy eu vi uma questao de threads mas na verdade eles pegaram a class principal e colocaram um protected… nada ver com threads, vc apostava que eles queria saber sobre threads… mas tinha a ultima opção la : nenhuma das anteriores hehe!!
A maior pegadinha aí é que o método print da classe Derived é static, então só será usado na última chamada. Se não fosse static, seria chamado na terceira também.
Não muda em nada sendo static ou não…
Derived() não sobreescreve print de Base(), c1 é do tipo Base() então a terceira linha sempre vai cair no print de Base()…
eheh essa eh sacanagem mesmo agora tem outra semelhante a essa que usa construtores sobrecarregado eh a mesma sintaxe… so q nao compila pq a subclass q extends a class pai nao sobrecarrega o contrutor declarado na pai…