2017-06-26 4 views
-1

Je viens juste de commencer à apprendre Java et j'apprends le dépassement de méthode. J'obtiens une erreur dans un programme en essayant de l'exécuter en éclipse. Le programme est le suivant:Comment utiliser la méthode principale dans le remplacement de méthode?

class Vehicle{ 
    void run(){System.out.println("Vehicle is running");} 
} 
class Bike extends Vehicle{ 

    public static void main(String args[]){ 
    Bike obj = new Bike(); 
    obj.run(); 
    } 
} 

L'erreur est:

Erreur: méthode principale ne trouve pas dans les véhicules de classe, s'il vous plaît définir la méthode principale que: public static void main (String [] args) ou une classe d'application JavaFX doit étendre javafx.application.Application

La sortie doit être: Le véhicule fonctionne.

J'ai essayé de taper l'instruction "public static void principal (String [] args)" après "class Vehicle" mais en obtenant d'autres erreurs. J'ai essayé le programme suivant:

class Vehicle{ 
    public static void main(String[] args){ 
    void run(){System.out.println("Vehicle is running");} 
    } 
} 
class Bike extends Vehicle{ 

    public static void main(String args[]){ 
    Bike obj = new Bike(); 
    obj.run(); 
    } 
} 

Ensuite, je reçois les erreurs suivantes:

Exception dans le thread "principal" java.lang.Error: problèmes de compilation: Unresolved erreur de syntaxe sur jeton "vide", nouveau prévu terme ne peut être résolu à un type System.out ne peut être résolu à un type erreur de syntaxe, insérer « Identifier (» pour terminer MethodHeaderName erreur de syntaxe, insérer «) » pour terminer MethodDeclaration erreur de syntaxe, insérer « ; " pour compléter MethodDeclaration Erreur de syntaxe, insérer « } » pour terminer ClassBody Cette méthode nécessite un corps au lieu d'un point-virgule Erreur de syntaxe sur jeton « } », supprimer ce jeton

at Vehicle.main(Vehicle.java:3) 

Quelqu'un peut-il s'il vous plaît expliquer ce qui est le bonne façon d'insérer «méthode principale» dans le programme ci-dessus.

Thx à l'avance.

+0

Comment compilez-vous et exécutez-vous ce code? –

+0

Il existe une définition de méthode dans votre méthode 'main()' de 'Vehicle'. Est-ce une faute de frappe ou essayez-vous vraiment de le faire? –

+0

Le premier exemple compile et fonctionne bien. – mishadoff

Répondre

1

cela est faux:

class Vehicle { 
    public static void main(String[] args){ 
void run(){System.out.println("Vehicle is running");} 
    } 
} 

vous ne pouvez pas simplement imbriquer une définition de la méthode dans une autre méthode comme ça ...

vous pouvez faire quelque chose comme:

public class Test { 

    public static void main(String args[]) { 
     Bike obj = new Bike(); 
     obj.run(); 
    } 

} 

class Vehicle { 
    void run() { 
     System.out.println("Vehicle is running"); 
    } 
} 

class Bike extends Vehicle { 

} 

et assurez-vous la classe que vous exécutez pour démarrer l'application est la classe de test (celle avec la méthode principale static void)

+0

J'ai essayé le programme ci-dessus, mais il montre toujours la même erreur. Il montre également que le type public Test doit être défini dans son propre fichier. Si je supprime également public, il montre toujours la même erreur. Erreur: "Méthode principale introuvable dans la classe Véhicule, veuillez définir la méthode principale comme: public static void principal (String [] args) ou une classe d'application JavaFX doit étendre javafx.application.Application" – Rahul

+0

Ce serait bien si vous définissiez tous les classe dans son propre fichier –

0

Vous aviez raison la première fois:

class Vehicle { 
    void run() { 
     System.out.println("Vehicle is running"); 
    } 
} 
class Bike extends Vehicle { 

    public static void main(String[] args) { 
     Bike obj = new Bike(); 
     obj.run(); 
    } 
} 

Cela ne fonctionne que je viens de testé, ce fut ma sortie:

Vehicle is running 
Process finished with exit code 0 

Je suggère que vous essayez de faire un « propre build & » avant fonctionnement.

+0

J'ai fait "clean & build" mais montrant toujours la même erreur. – Rahul