Overriding do método main

4 respostas
aleraraujo

Porque o método main pode ser overriding, se ele é estático.

[]s.

4 Respostas

cv1

Métodos estáticos, por definição, não podem ser sobrescritos. Mas, afinal, pq vc quer sobrescrever justo o método main? Não faz nenhum sentido, pra mim.

boaglio

Pois é , ele não pode sobrescrever mas pode “esconder”.

http://java.sun.com/docs/books/tutorial/java/javaOO/override.html

"Also, a subclass cannot override methods that are declared static in the superclass. In other words, a subclass cannot override a class method. A subclass can hide a static method in the superclass by declaring a static method in the subclass with the same signature as the static method in the superclass. "

Isso é meio confuso, mas observe o código abaixo:

class pai extends Object {

static void estatico(String s) {	
	System.out.println("Metodo estatico pai: "+s); }
}

class filho extends pai {

//	static void estatico(String s)	 {
//	  System.out.println("Metodo estatico filho: "+s);	 }
	  
 	   
public static void main(String [] bla){
	System.out.println("=================== classe filho ===================");
	estatico("teste do estático");
  }
	
}
C:	emp>javac filho.java

C:	emp>java filho
=================== classe filho ===================
Metodo estatico pai: teste do estßtico

descomentando as linhas temos:

class pai extends Object {

static void estatico(String s) {	
	System.out.println("Metodo estatico pai: "+s); }
}

class filho extends pai {

	static void estatico(String s)	 {
	  System.out.println("Metodo estatico filho: "+s);	 }
	  
 	   
public static void main(String [] bla){
	System.out.println("=================== classe filho ===================");
	estatico("teste do estático");
  }
	
}
C:	emp>javac filho.java

C:	emp>java filho
=================== classe filho ===================
Metodo estatico filho: teste do estßtico

C:	emp>
aleraraujo

eu havia pensado que o método main vinha da classe object .

[]s.

ozielneto

O Interpretador sempre vai chamar o Main da Classe que estiver na chamda do Javac.

Pois é assim que ele inicia a execução de uma aplicação Stan-Alone…

ClassName.main({""});

E metodos estático são herdados, mas não sobreescritos…

O main não vem da Object… (nao lembro de ter visto esse metodo no Java-Doc)…
http://java.sun.com/j2se/1.4.1/docs/api/java/lang/Object.html

[]'s

Criado 26 de maio de 2003
Ultima resposta 26 de mai. de 2003
Respostas 4
Participantes 4