Java >> Tutoriel Java >  >> Java

Pouvons-nous remplacer la méthode main () en Java?

La question est la suivante :"Pouvons-nous remplacer la méthode main() en Java ?"

  • Non, nous ne pouvons pas remplacer la méthode main() en Java .
  • Tout d'abord, nous allons comprendre ce qui est prioritaire ? La priorité est de savoir quelle signature de méthode sera la même dans la classe parent et enfant et le corps de la méthode sera différent dans la classe parent et enfant.
  • Maintenant, la question est de savoir pourquoi la méthode main() ne peut pas remplacer, nous verrons donc la réponse à cette question. La méthode main() n'est pas remplacée car elle est statique et nous ne pouvons pas remplacer les méthodes statiques ou dans d'autres les méthodes statiques de mots ne peuvent pas être remplacées.
  • La méthode statique est une méthode de classe, elle n'a pas besoin d'instanciation d'objet, nous pouvons donc appeler des méthodes statiques directement avec le nom de la classe.
  • Si nous essayons d'exécuter la méthode statique de la classe enfant afin qu'elle s'exécute indirectement, les méthodes statiques de la classe parent s'exécuteront, dans ce cas, il n'y a aucun sens de remplacer et de submerger le concept d'héritage également.
  • Supposons que si nous gardons la méthode statique main() dans la classe parent et la même méthode de remplacement dans la classe enfant et si nous appelons la méthode main() de la classe enfant, la méthode de la classe parent sera appelée par défaut, il n'y a donc aucun sens de remplacement des méthodes statiques, c'est pourquoi la méthode main() n'est pas remplaçable car elle est statique.
  • La méthode statique est une méthode de classe, donc la portée de la méthode au sein de la même classe elle-même, c'est pourquoi le concept prioritaire n'est pas applicable aux méthodes de classe ou, en d'autres termes, aux méthodes statiques.
  • Le concept prioritaire s'applique aux méthodes d'instance.

Exemple (Cas1) :Nous allons voir, dans un programme java, comment démontrer la méthode main() sans la surcharger

class WithoutOverridingMain {
    public static void main(String[] args) {
        System.out.println("main() method can't override");
        System.out.println("because this method is static");
    }
}

Sortie

E:\Programs>javac WithoutOverridingMain.java

E:\Programs>java WithoutOverridingMain
main() method can't override because this method is static

Exemple (Cas2) :Nous verrons dans un programme java comment démontrer la méthode main() avec redéfinition

Remarque :Il ne s'agit pas d'un remplacement, mais il semble qu'il soit remplacé.

class Parent {
    // Parent class main() method
    public static void main(String[] args) {
        // Display a message for the user
        System.out.println("We are in Parent class main() method");
    }
}

class Child extends Parent {
    /*  Overriding parent class main() method that's is not possible
        It looks like overriding but it is just another main method 
        with same signature of parent class
    */
    public static void main(String[] args) {
        //Display a message for the user. 
        System.out.println("We are in Child class main() method");
    }
}

class Main {
    public static void main(String[] args) {
        // creating an object of Parent class
        Parent p = new Parent();

        // Calling Parent class method
        p.main(new String[0]);

        // Creating Child class object
        Child c = new Child();

        // Call Child class method
        c.main(new String[0]);
    }
}

Sortie

E:\Programs>javac Main.java

E:\Programs>java Main
We are in Parent class main() method
We are in Child class main() method

Balise Java