Java de l'Aide aux Devoirs (Accès Membre Statique via l'Instance de Référence)
Voici mes devoirs question:
Écrire une déclaration de classe pour une classe “Horloge”. Il devrait avoir des variables d'instance pour les heures, minutes, secondes (tous les nombres entiers). Il doit également avoir une méthode toString() pour afficher l'heure dans le format indiqué ci-dessous. Écrire un “ClockDriver” classe a) créer une instance d'une horloge, b) régler les heures, les minutes et les secondes de l'horloge, et c) l'heure de l'Horloge à l'aide getTime(). Utiliser le Chien de la classe exemple à la page 36 à titre de guide. L'échantillon est indiqué ci-dessous:
Le temps est de 3:45:00
//ne vous inquiétez pas si vous ne pouvez pas obtenir à la fois des zéros dans
//le deuxième champ. C'est un problème de mise en forme
//nous allons traiter plus tard
Voici ma classe de l'Horloge:
class Clock {
int hours;
int minutes;
int seconds;
public String toString() {
String temp = ("");
return temp.format("%02d:%02d:%02d", hours, minutes, seconds);
} //end method toString
public void getTime() {
System.out.print("The time is " + toString());
} //end method getTime
} //end class Clock
Et voici mon ClockDriver classe:
public class ClockDriver {
public static void main (String[] args) {
Clock c = new Clock();
c.hours = 4;
c.minutes = 30;
c.seconds = 00;
c.getTime();
} //end main
} //end class ClockDriver
Même si il compile fine et fonctionne très bien, j'obtiens ce que je pense est un avertissement de la part de l'IDE en disant que mon
return temp.format("%02d:%02d:%02d", hours, minutes, seconds);
ligne est l'accès à un membre statique via l'instance de référence. Plus précisément, le
temp.format
peu.
Donc mes questions sont:
1.) Pourquoi l'accès à un membre statique par exemple référence pas forcément encouragé?
2.) Est-il une meilleure façon de mettre cela ensemble, de sorte que je ne suis pas d'accéder à un membre statique via l'instance de référence?
Merci d'avance!
OriginalL'auteur Bit Deception | 2013-08-20
Vous devez vous connecter pour publier un commentaire.
Méthodes statiques appartiennent à la classe elle-même, pas n'importe quelle instance. Alors que vous pouvez appeler un
static
méthode à partir d'une instance de la classe, vous n'avez pas à utiliser une instance de la classe, et vous ne devriez pas. Il peut être source de confusion, parce qu'il semble que la méthode n'est passtatic
, même si elle eststatic
.La meilleure et la plus claire d'appeler une
static
méthode consiste à utiliser le nom de la classe elle-même, et non une instance de la classe, à l'appel de la méthode:Et vous n'avez pas besoin de la
temp
exemple à tous.OriginalL'auteur rgettman
Gardez à l'esprit que si une instance d'une certaine Classe, permet de l'appeler c, a une fonction,
void foo()
, et que vous utilisez l'instancec
appelerfoo
comme suit:c.foo();
ce qui est appelé:
foo(c);
tout en appelant une fonction statique nulle foo2():
Class.foo2();
est appelé tout comme il semble.
L'appel d'une fonction statique à l'aide d'un exemple indique un utilisateur qui n'est probablement pas sûr de ce qu'il est en train de faire.
OriginalL'auteur TomF
En fait, vous devez ne pas utiliser la chaîne de caractères
temp
. Vous devez l'appeler commeString.format
. Pour répondre à votre question, il est source de confusion, étant donné que l'appel ne fait pas de regardertemp
.OriginalL'auteur tbodt