【问题标题】:How to execute multiple constructor, when creating single object [duplicate]创建单个对象时如何执行多个构造函数[重复]
【发布时间】:2013-09-30 17:35:46
【问题描述】:

我想在创建单个对象的同时执行多个构造函数。例如,我有一个这样的类定义-

public class Prg
{
    public Prg()
    {
        System.out.println("In default constructor");
    }
    public Prg(int a)
    {
        System.out.println("In single parameter constructor");
    }
    public Prg(int b, int c)
    {
        System.out.println("In multiple parameter constructor");
    }
}

我正在尝试通过以下代码来实现它 -

public class Prg
{
    public Prg()
    {
        System.out.println("In default constructor");
    }
    public Prg(int a)
    {
        Prg();
        System.out.println("In single parameter constructor");
    }
    public Prg(int b, int c)
    {
        Prg(b);
        System.out.println("In multiple parameter constructor");
    }
    public static void main(String s[])
    {
        Prg obj = new Prg(10, 20);
    }
}

但在这种情况下,它会产生错误,例如 -

Prg.java:11: error: cannot find symbol
            Prg();
            ^
  symbol:   method Prg()
  location: class Prg
Prg.java:16: error: cannot find symbol
            Prg(b);
            ^
  symbol:   method Prg(int)
  location: class Prg
2 errors

谢谢

【问题讨论】:

    标签: java constructor


    【解决方案1】:

    在您的构造函数中使用this() 而不是Prg()

    【讨论】:

    • 哦,谢谢。我正在搜索诸如 super 之类的关键字,以指向同一类。但我没有试过这个。现在它正在工作。
    【解决方案2】:

    使用this关键字。完整运行代码如下

    public class Prg
    {
        public Prg()
        {
            System.out.println("In default constructor");
        }
        public Prg(int a)
        {
            this();
            System.out.println("In single parameter constructor");
        }
        public Prg(int b, int c)
        {
            //Prg obj = new Prg(10, 20);
    
    this(b);        System.out.println("In multiple parameter constructor");
        }
        public static void main(String s[])
        {
            Prg obj = new Prg(10, 20);
        }
    }
    

    【讨论】:

      【解决方案3】:

      调用其他构造函数时使用this()而不是Prg()

      【讨论】:

        【解决方案4】:

        使用this 而不是Prg

            public Prg()
            {
                System.out.println("In default constructor");
            }
            public Prg(int a)
            {
                this();
                System.out.println("In single parameter constructor");
            }
            public Prg(int b, int c)
            {
                this(b);
                System.out.println("In multiple parameter constructor");
            }
        

        【讨论】:

          【解决方案5】:

          您应该使用this 声明。

          例如

          public Prg(int b, int c)
          {
              this(b);
              System.out.println("In multiple parameter constructor");
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-10-27
            • 2020-10-10
            • 2014-03-06
            • 1970-01-01
            • 2019-12-21
            • 1970-01-01
            • 2014-08-13
            相关资源
            最近更新 更多