我想打电话给一个班级' (Lord.java)方法来自main方法。当我第一次尝试这个Eclipse时,抛出了从静态方法调用非静态方法的错误。然后我将所有字段/方法更改为Eclipse推荐的静态,这解决了这个问题。我知道应该使用静态的情况很少,而且我不确定我是否在代码中正确使用了关键字。如果没有,我怎么能在没有它的情况下重写呢?
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;
}
}
答案 0 :(得分:2)
static
关键字表示您不需要此类型的实例来使用特定字段或方法。 逆就是如果你有一个声明为static
的字段,那么每个实例将具有相同的值。
从这个角度来看,你有几个主要问题:
relationship
s的所有实例,Lord
将设置为90。这显然不是你想要的。Main
中,您只能与Robert
内的main
进行互动,因为这是您声明的唯一不需要Main
实例的变量使用。第一个问题很容易解决 - 从该字段中删除static
。第二个就是直截了当 - 从字段中删除static
并在main
方法中移动所有实例化语句。