可以在Java中将构造函数标记为final,abstract或static吗?

除public,protected和private构造函数外,不允许任何其他修饰符。

  • 当将final关键字与方法或构造函数一起使用时,不能覆盖它。但是,Java中的构造函数不能被覆盖,因此,不需要在构造函数中使用final关键字。

  • 由于无法覆盖构造函数,因此如果将其抽象化,则无法为其提供主体。因此,不能在构造函数中使用abstract关键字。

  • 如果要在实例化类之前调用类的成员,则需要在其之前使用static。但是,在实例化时会隐式调用承包商。因此,在构造函数中使用static是没有意义的。

示例

public class Sample {
   public final static Sample(){
      System.out.println("Hello");
   }
   public static void main(String args[]) throws Exception{
      Sample obj = new Sample();
   }
}

输出结果

C:\Sample>javac Sample.java
Sample.java:2: error: modifier static, final not allowed here
public final static Sample(){
                    ^
1 error