从main()和plugin.execute()重载的构造函数

时间:2017-03-21 19:08:56

标签: java

修改...

  1. 使用main()重载构造函数实例化类是否也调用无参数构造函数?
  2. 使用plugin.execute()重载构造函数实例化插件类的应用程序是否必须调用无参数构造函数?
  3. 澄清:我期待main()的一个答案和plugin.execute()入口点的答案。

    class pluginObj {
    
        public pluginObj() {}             // default /primary constructor
        public pluginObj(int altConst) {} // alternate constructor
    
        public execute() {    //... plugin entry code goes here
        }
    
        public main() {       //... test entry code goes here
        }
    }
    

    context:class是另一个应用程序的插件,在短期内使用main()进行测试我知道Junit是从长远来看这样做的正确方法。

1 个答案:

答案 0 :(得分:0)

构造函数的工作原理如下

Public class ExampleClass{
    private int in1;
    private int in2;
    public ExampleClass(){
        this(5) // overloading using some default value
    } // overloads the below and if called super is called here and not below, this then runs the functionality of the below constructor

    public ExampleClass(int in1){
        super(); // hidden call to parent constructor
        this.in1 = in1;
    } // doesn't overload the below or above, and if called simpley sets int1

    public ExampleClass(int in1, int in2){
        super(); // hidden call to parent constructor
        this.in1 = in1;
        this.in2 = in2;
    } // everything is done here, has nothing to do with the other 2 constructors
}

意味着依赖于你如何执行重载...它总是调用super(),以及在其他构造函数中定义的任何其他内容,还要注意1个实例总是只使用1个构造函数来实例化,但是如所示仍然可以使用其他构造函数为类提供多个起始点,例如,它可以用于使类更容易创建,或者在实例化时强制某些与类相关的永久值。

也可以改变" super()"使用了电话,请参阅JavaDoc 只需使用您想要使用的构造函数的参数调用super