8
votes

Comment fonctionne Java Hello World sans instance d'objet?

Je suis un débutant à Java et je suis confus à propos de quelque chose:

Dans le programme simple Hello World en Java, aucun objet n'est créé alors comment la classe travaille-t-elle dans l'exemple suivant? < Pré> xxx


1 commentaires

Le "monde Hello" est un objet au moins :)


6 Réponses :


17
votes

Cela ne crée pas d'instance de helloworld car principal est une méthode statique . Des méthodes statiques (et des champs statiques) sont liées au type type plutôt qu'à un instance du type.

Voir le Page de tutoriel Java sur les membres statiques / instance < / a> Pour plus de détails, avec Cette question de dépassement de pile (entre autres).


5 commentaires

Comment pouvez-vous poster une réponse en quelques secondes?


Je viens de le voir, c'est tout.


Y a-t-il une question que vous ne pouvez pas répondre?


La question est probablement plus ... "faites-vous cela comme un travail à temps plein?" :) Mais continuez de cette façon, votre information est vraiment précieuse


@Juri "fais-tu cela comme un travail à temps plein?" - En tant qu'actionneur de Google, j'espère que non :-)



4
votes

Des méthodes statiques telles que Main () peuvent être utilisées sans objet.


0 commentaires

-1
votes

Votre système de construction liera le point d'entrée du programme à la routine "principale" de la classe. Une seule classe peut avoir une routine "principale".

"Main" est statique. Cela signifie que c'est une "méthode de classe". Cela fonctionne sans une instance.


1 commentaires

Je soupçonne que tu penses que c #. En Java, aucun nombre de classes peut avoir des méthodes «principales». Mind You, c'est vrai en C # - il vous suffit de dire au compilateur dont la classe doit être traitée comme point d'entrée.



0
votes

Plus tard, si vous souhaitez utiliser des méthodes helloworld non statiques, vous devez créer une instance de helloworld dans la méthode principale (Main ne sera plus exécutée car ce n'est pas constructeur).


0 commentaires

10
votes

Une version plus OO ressemblerait à: XXX

que je suppose ressemble davantage à ce que vous attendiez. Il instancime une nouvelle instance de classe Helloword, puis la demande de faire quelque chose. Pour apprendre OO, je trouve cela plus intuitif et (pour des raisons pour lesquelles je ne vais pas entrer ici), j'ai tendance à craindre des méthodes statiques lors de la rédaction de mes propres cours (brièvement - problèmes de filetage / État commun, etc.) < / p>


1 commentaires

Non ... une version plus oo ressemblerait à Servicelocator.GetService (greeterfactory.class) .GetGreeter () .Greet (World) .on (SYS TEM.out); . ;)



11
votes

Toute variable ou méthode déclarée statique forte> peut être utilisée indépendamment d'une instance de classe.

Expériment strong> P>

Essayez de compiler cette classe: p> xxx pré>

Ceci réussit car la variable int_value code> est déclarée statique (comme la méthode principale code>). p> Essayez de compiler cette classe avec la classe précédente: p> xxx pré>

Ceci réussit car la variable int_value indicateur> est à la fois statique forte> et public fort>. Sans entrer dans trop de détails, il est généralement bon d'éviter de faire des variables publiques. P>

Essayez de compiler cette classe: p>

public class HelloWorld {
    public int int_value = 42;

    public HelloWorld() { }

    public static void main( String args[] ) {
        HelloWorld hw = new HelloWorld();
        System.out.println( "Hello, " + hw.int_value );
    }  
}


0 commentaires