我已经阅读了this,还有this,我想我已经获得静态和非静态内容的理论观点,但我无法应用它以下情况(应该是可行的)可能是这样,所以,基本但......人类。
public class MyClass {
private String varA ;
private int varB;
public MyClass(String var, int var) throws SocketException {
//stuff to work with
}
private void methodA() {
//more stuff....
}
public static void main(String args[]) throws IOException {
//How to instatiate MyClass(varA,varC)?
}
}
那么,如果MyClass不是静态的,它应该如何从main中实现MyClass呢?
答案 0 :(得分:2)
如何实现MyClass(varA,varC)?
public static void main(String args[]) throws IOException {
//local variables
String varA = "A";
int varC = 10;
//Use the constructor of the class to create an object
MyClass myClassObj = new MyClass(varA, varC);
}
您始终需要使用类提供的构造函数来实例化类。你的类中没有默认的(无参数)构造函数,所以你需要传递如上所示的构造函数参数来实例化类。
您可以查看here。
在MyClass
类实例变量varA
中,分别为每个对象(实例)创建/维护varB
。
只是要添加,如果类中存在任何静态变量,它们将仅按类(而不是每个对象)进行维护。
答案 1 :(得分:1)
我希望这个答案有助于您理解为什么main方法在非静态类中是静态的
Why is the Java main method static?
另外,在代码中:
MyClass myClass = new MyClass(varA, varC);
使用带有您自己的参数列表的公共构造函数创建您的类的新实例。
答案 2 :(得分:1)
同意JavaGuy。 为了您的清晰起见,main方法是静态的,因此可以从JVM调用它而无需实例化类。因此,要访问类的任何非静态成员,您需要具有JavaGuy上述解决方案所提及的类的实例。