我是否正确使用了 'static' 关键字?
Am I using the 'static' keyword correctly?
我正在尝试从 main 方法调用 class' (Lord.java) 方法。当我第一次尝试这个 Eclipse 时,抛出了关于从静态方法调用非静态方法的错误。然后我将所有 fields/methods 更改为 Eclipse 推荐的静态,这解决了这个问题。我知道很少有情况应该使用 static 并且我不确定我是否在我的代码中正确使用了关键字。如果没有,没有它我该如何重写?
Main.java
package mainPackage;
public class Main {
static Lord Robert = new Lord(15, 'a');
Lord Renly = new Lord(-5, 'b');
Lord Stannis = new Lord(30, 'b');
Lord Oberyn = new Lord(-60, 'b');
Lord Eddard = new Lord(0, 'a');
Lord Tywin = new Lord(90, 'a');
//Instantiatation ends
int fiefs;
public static void main (String args[]) {
Robert.giveFief();
System.out.print(Robert.relationship);
}
}
Lord.java
package mainPackage;
public class Lord {
protected static int relationship;
protected char clique;
public Lord(int a, char b) {
relationship = a;
char clique = b;
}
public static int giveFief() {
relationship +=10;
return relationship;
}
}
static
关键字表示您不需要此类型的实例来使用特定字段或方法。 相反是,如果您确实有一个声明为static
的字段,那么每个实例将具有相同的值。
鉴于此,您有几个主要问题:
对于 Lord
的所有实例,relationship
将设置为 90。这显然不是你想要的。
- 在
Main
中,您只能与 main
内部的 Robert
交互,因为这是您声明的唯一不需要 [=14= 实例的变量] 使用。
第一个问题很容易解决 - 从该字段中删除 static
。第二个同样简单 - 从字段 中删除 static
并且 将所有实例化语句移动到 main
方法中。
我正在尝试从 main 方法调用 class' (Lord.java) 方法。当我第一次尝试这个 Eclipse 时,抛出了关于从静态方法调用非静态方法的错误。然后我将所有 fields/methods 更改为 Eclipse 推荐的静态,这解决了这个问题。我知道很少有情况应该使用 static 并且我不确定我是否在我的代码中正确使用了关键字。如果没有,没有它我该如何重写?
Main.java
package mainPackage;
public class Main {
static Lord Robert = new Lord(15, 'a');
Lord Renly = new Lord(-5, 'b');
Lord Stannis = new Lord(30, 'b');
Lord Oberyn = new Lord(-60, 'b');
Lord Eddard = new Lord(0, 'a');
Lord Tywin = new Lord(90, 'a');
//Instantiatation ends
int fiefs;
public static void main (String args[]) {
Robert.giveFief();
System.out.print(Robert.relationship);
}
}
Lord.java
package mainPackage;
public class Lord {
protected static int relationship;
protected char clique;
public Lord(int a, char b) {
relationship = a;
char clique = b;
}
public static int giveFief() {
relationship +=10;
return relationship;
}
}
static
关键字表示您不需要此类型的实例来使用特定字段或方法。 相反是,如果您确实有一个声明为static
的字段,那么每个实例将具有相同的值。
鉴于此,您有几个主要问题:
-
对于
relationship
将设置为 90。这显然不是你想要的。- 在
Main
中,您只能与main
内部的Robert
交互,因为这是您声明的唯一不需要 [=14= 实例的变量] 使用。
Lord
的所有实例,第一个问题很容易解决 - 从该字段中删除 static
。第二个同样简单 - 从字段 中删除 static
并且 将所有实例化语句移动到 main
方法中。