Mih*_*csu 17 java program-entry-point class object instantiation
我正在浏览我的OOP类文档,我发现了这个例子:
class Student {
private String name;
public int averageGrade;
public Student(String n, int avg) {
name = n;
averageGrade = avg;
}
public static void main(String[] args) {
Student s = new Student("John", 9);
}
}
Run Code Online (Sandbox Code Playgroud)
我发现它们正在从同一个类的主要实例化一个对象时感到困惑.这被认为是不好的做法吗?新创建的对象s
是否有主方法?
谢谢!
Jon*_*eet 17
这完全没有错.这完全正常.(不可否认,对于一个主要方法的类来说,显然可以执行某些东西会更有意义- 类中的main
方法Student
没有多大意义.)
对象实际上没有方法 - 类具有方法,无论是在没有任何特定上下文的情况下调用的静态方法,还是在该类型(或子类)的特定对象上调用的实例方法.
虽然你可以调用s.main(...)
,实际上只会解析为静态方法的调用Student.main
; 你不应该像这样调用静态方法"via"表达式,因为它令人困惑.
JB *_*zet 15
不,这不是不好的做法.它实际上相当频繁.你错过的是main是一种静态方法.它不是Student对象的方法.这是Student课程的一种方法.你不用它调用它someStudent.main(...)
,但是Student.main(...)
.
有关更多说明,请参阅http://download.oracle.com/javase/tutorial/java/javaOO/classvars.html.