class Singer
{
String name;
String album;
public Singer(){
name="Whitney Houson";
album="Latest Releases";
}
public static void main(String[] args)
{
System.out.println("Name of the singer is "+name);
System.out.println("Album Information stored for "+album);
}
}
当我运行这段代码时,我发现了一个错误,提示无法从静态上下文中引用非静态变量名
那是因为变量name和album在主程序中并不存在,因为它是静态的,这意味着它不能访问实例级成员。您将需要一个 Singer 类的实例,如下所示:
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);
}
但是,除非您使用公共(public)访问修饰符声明您的姓名/专辑成员,否则上述代码将无法编译。我建议为每个成员(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());
}
}
另一种方法是将名称和相册声明为静态的,然后您可以按照最初的方式引用它们。