eu fiz uma bagunça aqui, mas da para passar a idéia
o que imprime?
public class C
{
public static void main(String[] args)
{
A.a();
B.a();
A a = new A();
B b = new B();
A c = new B();
a.a();
b.a();
c.a();
}
}
class A
{
static void a(){System.out.println("a");}
}
class B extends A
{
static void a(){System.out.println("b");}
}
pra mim esse codigo compila…
e reclamara a ausencia do metodo main se vc tentar executar a classe , pois o compilador procura a assinatura do main quando é executado…
O compilador nao procura nenhum metodo main na sua classe - quem faz isso eh a jvm, leo… mas o que acontece eh que antes de procurar um metodo main, a vm precisa carregar a classe: tcharam! quando ela carrega a classe, o metodo estatico eh executado, e a vm eh convenientemente informada de que ela tem que morrer antes mesmo de levantar da cama
Exato,cv o bloco estático é executado primeiro pelo carregador de classe,e antes q ele possa chegar a presença do método Main a chamada
a System.exit termina a execução de forma abrupta…Qdo alguém quiser
ver direito o q ocorre troque esse System.exit por System.out.println… aí,reclamará a ausência do main()…