Eso es debido a que el nombre de las variables y el álbum no existe en el procedimiento principal, porque es estático, lo que significa que no puede acceder a los miembros del nivel de instancia. Usted necesitará una instancia de la clase Singer, de esta manera:
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);
}
Sin embargo, a menos que se declare sus miembros/nombre del álbum con un modificador de acceso público, el código anterior fallará para compilar. Le recomendé escribir un getter para cada miembro (getName(), getAlbum(), etc.) para beneficiarse de la encapsulación. De esta manera:
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());
}
}
Otra alternativa sería declarar el nombre y álbum como estática, a continuación, puede hacer referencia a ellos en la manera que quería originalmente.
'... + s.name); ... + s.album); ' – khachik
BTW, el código anterior se compilará y ejecutará bien, si el nombre es privado ya que' main' también pertenece a 'Singer'. – khachik