C'est parce que le nom des variables et L'album n'existe pas dans la procédure principale, car il est statique, ce qui signifie qu'il ne peut pas accéder aux membres de niveau instance. Vous aurez besoin d'une instance de la classe Singer, comme ceci:
public static void main(String[] args) {
Singer s = new Singer();
System.out.println("Name of the singer is " + s.name);
System.out.println("Album information stored for " + s.album);
}
Cependant, à moins que vous déclarez vos membres nom/album avec un modificateur d'accès public, le code ci-dessus ne parviendra pas à compiler. J'ai recommandé d'écrire un getter pour chaque membre (getName(), getAlbum(), etc), afin de bénéficier de l'encapsulation. Comme ceci:
class Singer {
private String name;
private String album;
public Singer() {
this.name = "Whitney Houston";
this.album = "Latest Releases";
}
public String getName() {
return this.name;
}
public String getAlbum() {
return this.album;
}
public static void main(String[] args) {
Singer s = new Singer();
System.out.println("Name of the singer is " + s.getName());
System.out.println("Album information stored for " + s.getAlbum());
}
}
Une autre alternative serait de déclarer le nom et l'album comme statique, alors vous pouvez les référencer dans la façon dont vous avez initialement prévu.
'... + s.nom); ... + s.album); ' – khachik
BTW, le code ci-dessus va compiler et fonctionner correctement, si le nom est privé puisque' main' appartient aussi à 'Singer'. – khachik