에서 참조 할 수 없다는 내가 오류를 발견하고이 코드를 실행하면 때문에 변수 이름과 앨범은 기본 절차에 존재하지 않습니다. 정적이어서 인스턴스 수준 멤버에 액세스 할 수 없습니다. 공용 액세스 한정자로 이름/앨범 멤버를 선언하지 않는 한, 위의 코드를 컴파일 할 수 없게됩니다, 그러나
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);
}
:이 같은 가수 클래스의 인스턴스가 필요합니다. 캡슐화의 이점을 얻기 위해 각 멤버 (getName(), getAlbum() 등)에 대한 getter 작성을 권장했습니다. 이처럼 :
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());
}
}
또 다른 대안은 당신이 원래 의도 한 방식으로 참조 할 수 있습니다, 이름과 앨범 정적으로 선언하는 것입니다.
'... + s.name); ... + s.album);' – khachik
BTW, 위의 코드는'main'이'Singer'에 속하기 때문에 이름이 private 인 경우 컴파일되고 잘 실행됩니다. – khachik