java - 在Java中从该类的主体内部实例化对象

标签 java class object program-entry-point 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);
    }
}

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

谢谢!

最佳答案

这完全没有错。这是完全正常的。 (无可否认,对于具有 main 方法的类来说,显然可以执行会更有意义 - Student 类中的 main 方法没有多大意义。)

对象并没有真正的方法——有方法,要么是在没有任何特定上下文的情况下调用的静态方法,要么是在该类型的特定对象(或子类)上调用的实例方法).

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

关于java - 在Java中从该类的主体内部实例化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892622/

相关文章:

java - 多 mySQL 驱动的网站

java - 如何使用prepareStatement更新数据,字段和值都需要设置

java - Java 有功能级调试/日志记录工具吗?

javascript - 将数组值与对象键进行比较

java - 修改链表的最后一个或第一个节点?

全局窗口中无法访问 Javascript ES6 类定义

java - 反序列化 GSON 中的接口(interface)

C++, union 与类继承

java - 如何创建动态对象列表

javascript - JS - 使用 "new"和将对象作为上下文传递给构造函数有什么区别