dass, weil der Variablen Name ist referenziert werden und Album existiert nicht in der Hauptprozedur, da es statisch ist, was bedeutet, dass es nicht auf Mitglieder auf Instanzebene zugreifen kann. Sie erhalten eine Instanz der Singer-Klasse benötigen, wie folgt aus:
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);
}
Allerdings, wenn Sie Ihren Namen/Album-Mitglieder mit einem öffentlichen Zugriffsmodifikator erklären, wird der obige Code nicht kompilieren. Ich empfehle das Schreiben eines Getters für jedes Mitglied (getName(), getAlbum(), usw.), um von der Kapselung zu profitieren. Wie folgt aus:
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());
}
}
Eine andere Alternative wäre, Name und Album als statisch deklarieren, dann können Sie sie in der Art und Weise verweisen Sie ursprünglich beabsichtigt.
'... + s.name); ... + s.album); ' – khachik
BTW, der obige Code wird kompiliert und läuft gut, wenn der Name privat ist, da' main' ebenfalls zu 'Singer' gehört. – khachik