2012-01-31 18 views

Respuesta

15

No. main es un método estático, y por lo tanto no es polimórfica. Sin embargo, puede ocultar definir otro método estático main en una subclase.

1

No. No puede anular un método estático.

En realidad, no tendría ningún sentido. Como no necesita una instancia de la clase, no necesita un comportamiento polimórfico. Simplemente cambiaría el todo de SomeParent.main() a SomeChild.main()

0

MAIN es un método de clase (ya que es static por definición). Por lo tanto, no tiene sentido "anular" (o para el caso cualquier método estático).

El concepto de "anulación" es solo por métodos de ejemplo.

This es una buena lectura con respecto a la misma.

0

No, no es posible anular los métodos estáticos, ya que no son métodos de nivel de instancia, sino métodos de nivel de clase.

3

No y usted está perdiendo el foco aquí. El método principal tiene un único propósito y se declara lógicamente para ese único propósito:

El método principal en Java pertenece a una clase pero no a un objeto. Los objetos se crean en el main() en Java, es el punto de inicio en su aplicación, no hay forma de iniciar su aplicación desde un método específico de instancia. Es por eso que la palabra clave estática tiene mucho sentido con el método principal. De hecho todas las partes de la declaración principal método tienen sentido cuando se piensa como el 'JVM' y la imagen de lo que hace el método principal (inicia la aplicación):

  • public, ya que este método debe ser accesible por el jvm (no escrito por usted).
  • static, lo que implica que se puede acceder a este método sin tener un objeto (porque su representación nunca cambia), pero aquí la lógica es fácil de entender si piensas como el jvm nuevamente; "No tengo ningún objeto para crear (instanciar) objetos, por lo que necesito un método estático para iniciar la aplicación, ya que simple no es una forma lógica de obtener un método específico de instancia ya que no tengo nada arriba aún para crear objetos ".
  • void Este método no puede devolver nada lógicamente porque aún no hay nada para devolver nada. Es el punto de inicio de la aplicación. main Yo soy el método principal ya que sin mí no tendrás una aplicación.
  • String[] args Envíame datos que quizás te puedan resultar útiles para mi startup.
3

No podemos anular el método estático porque el método estático es un método de clase y el alcance de este método dentro de la misma clase. Entonces, si desea sobrescribirlo con fuerza, debe definirlo fuera del alcance de esa clase, lo cual no tiene sentido.

-1

yo probamos este, no sé si su forma correcta de reemplazar el método, pero yo soy capaz de reemplazar el método principal de este tipo,

class MainOverride { 

    public static void main(String[] args) { 

     MainOverridden mo = new MainOverridden(); 

     String [] s = {"a","b"}; 
     mo.main(s); 


    } 

} 

class MainOverridden extends MainOverride { 

    public static void main(String[] args) { 

     System.out.println("Main overridden"); 

    } 

} 
+2

No puede anular un método estático. Acabas de ocultar el método principal de la clase 'MainOverride'. –

+0

Él ni siquiera lo ha escondido. Todavía es posible ejecutar 'MainOverride' como una aplicación, tal como era antes. El hecho de que tenga una subclase es irrelevante si no le está diciendo que ejecute esa subclase. –

+0

Gracias por los comentarios. Obtuve que la forma en que he seguido para anular no es prácticamente válida, pero por favor, ¿pueden celebrar más? Como soy nuevo en Java :) –

Cuestiones relacionadas