Porque o método main pode ser overriding, se ele é estático.
[]s.
Porque o método main pode ser overriding, se ele é estático.
[]s.
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.
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>
eu havia pensado que o método main vinha da classe object .
[]s.
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