在下面的类中,我有getName()
我想要的方法,static
因为我打算在同一个类的另一个方法中使用它Person
(我想这样做:)Person.getName()
,但是当我把它放出来时,我static
得到了以下错误:
non-static variable name cannot be referenced from a static context
,a可能的解决方案是删除private
to 变量name
,
这个问题还有其他解决方案吗?
可以保留private
变量name
吗?
class Person{
private String name, gender;
Person(String name, String gender){
this.name=name;
this.gender=gender;
}
static String getName(){//si se le pone static marca error.
return name;
}
String getGender(){
return gender;
}
}
静态方法只能访问静态数据。
数据是Person类实例的变量,
name
除非您执行gender
new Person("Pedro","H");
想象在“现实生活”中......你知道什么是Person,如果我问你“给我这个人的名字”你会怎么做......你会问我是哪个人吗?
哦!但是有一个人叫 Michelle,还有一个人叫 Octavio,这些都是 People 的实例。
简要说明
非静态成员属于类的实例/对象。静态成员属于该类。如果一个 getter 被声明为静态的,那么它对于类的所有实例都是通用的,而不是对于每个实例的特定值。由于这是不一致的,因此您的问题的解决方案是不要为您的属性使用静态 getter。
长解释
在类中,当您将成员(属性或方法)声明为静态时,这意味着该成员属于该类而不是实例。这意味着无需创建类的实例即可访问这些成员。
例子:
离开
由于静态成员属于类,它不能访问实例成员,因为实例成员属于类的特定实例(对象)。例子:
离开:
如您所见,静态成员可以被认为是类的所有实例的全局,而非静态元素对应于类的每个实例。这是一个显示差异的示例: