Java中的main和constructor可以放在一个类中吗

Posted

技术标签:

【中文标题】Java中的main和constructor可以放在一个类中吗【英文标题】:Can main and constructor be together in a class in Java 【发布时间】:2015-09-17 00:09:38 【问题描述】:

检查以下代码:

import Shashwat.TestJava;

public class Main extends TestJava 

    public static void main(String s[]) 
        System.out.println("Inside Orignal \"Main\" Method");
        Main m = new Main();
    

    public void Main() 
        System.out.println("Inside Duplicate Main");
    

现在的重点是,当我执行程序时,这条线会运行

System.out.println("Inside Orignal \"Main\" Method");

之后我使用创建一个主类对象

Main = new Main();

据我所见,这应该调用必须命名为“Main”的构造函数,因为类名为 Main。现在这就是它执行到的

Inside Orignal "Main" Method

但我创建了一个构造函数,它应该打印出文本。那么为什么不打印呢?在具有主要方法的类中不允许构造函数吗?

【问题讨论】:

public void Main() 不是构造函数。这是一个 void 方法,没有名为 Main 的参数。 【参考方案1】:

它没有打印,因为您创建了一个名为 Main()void-returning 方法,但为了成为构造函数,它应该是:

public Main() 
   System.out.println("Inside Duplicate Main");

【讨论】:

【参考方案2】:

这不是构造函数,而是常规方法:

public void Main()

    System.out.println("Inside Duplicate Main");

由于您的 Main 类没有构造函数,编译器会生成一个默认构造函数,并在执行 Main = new Main(); 时调用它。这就是为什么你看不到"Inside Duplicate Main"

这是一个构造函数(注意没有返回类型):

public Main()

    System.out.println("Inside Duplicate Main");
    

从您的Main 方法中删除void,您将看到您的构造函数被调用。

【讨论】:

以上是关于Java中的main和constructor可以放在一个类中吗的主要内容,如果未能解决你的问题,请参考以下文章

C#和Java中的构造器constructor是啥?起啥作用?为啥不可以被override??

C语言 main()前可以放哪些限定的函数!?

Scala入门系列:面向对象之object

JAVA如何在main()中取得当前jar的名字和路径?

React中的constructor和super+生命周期

Java中的构造函数Constructor怎么用