在 Java 中,从该类的主内部实例化对象

我正在查看我的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);
    }
}

我发现令人困惑的是,他们正在从同一类的主节点实例化一个对象。这被认为是不好的做法吗?新创建的对象是否具有 main 方法?s

谢谢!


答案 1

这完全没有错。这是完全正常的。(诚然,对于具有主方法的类来说,显然是可以执行的东西会更有意义 - 类中的方法没有那么多意义。mainStudent

对象实际上没有方法 - 具有方法,可以是在没有任何特定上下文的情况下调用的静态方法,也可以是在该类型的特定对象(或子类)上调用的实例方法。

虽然你可以调用它实际上只是解析为对静态方法的调用;你不应该像这样调用静态方法“via”表达式,因为它令人困惑。s.main(...)Student.main


答案 2

不,这不是不好的做法。这实际上相当频繁。你错过的是main是一个静态方法。它不是 Student 对象的方法。这是学生班的一种方法。您不会使用 调用它,而是使用 。someStudent.main(...)Student.main(...)

有关更多说明,请参阅 http://download.oracle.com/javase/tutorial/java/javaOO/classvars.html