Java - 构造函数

时间:2017-02-19 19:35:30

标签: java constructor

所以,我在学习了Python的基础知识之后学习了Java,并且我在构造函数中工作了。这是我正在做的一个小程序来理解它。

        DatabaseHelper mydb = new DatabaseHelper(this);
        mydb.insertData("test");

然后是Cube Class

package random;
import java.util.Scanner;

public class program {
    public static void main(String[] args) 
    {       
        Scanner input  = new Scanner(System.in);
        Cube x = new Cube();
        Cube y = new Cube(20,20,20);

        System.out.println(x.cubeVolume());
        System.out.println(y.cubeVolume());
    }
}

但我的问题是要解决为什么我的 y Cube 获得20,20,20并且不会更改为10,20,30 ...为什么它选择 Cube(int l,int w,int h) 而不是 Cube() ?是什么让 x Cube 转到 Cube() y Cube Cube(int l,int w,int h)

3 个答案:

答案 0 :(得分:1)

它将查找与您正在调用的构造函数匹配的构造函数 x cube的构造为零参数,因此将选择no-arg构造函数 y cube由三个参数构成,因此将选择three-arg构造函数。

答案 1 :(得分:1)

  1. 显示程序的输出会有所帮助,这有助于调试。

  2. 宽度,长度和长度拼写使用:'th',而不是'ht'。这不会影响您的程序编译或运行的方式,但会帮助其他人阅读您的代码。

  3. 在直接回答您的问题时,您有两个重载的构造函数:

    立方(); 立方体(int length,int width,int height);

    编译器将根据您提供的参数选择构造函数。只使用了一个构造函数(如果你不提供构造函数,编译器会创建一个默认的Cube(){},以及一个默认的super()构造函数,依此类推。)

答案 2 :(得分:0)

基本上构造函数初始化对象的全局变量。

 construct()  ---> non-parametrized constructor

 construct(parameter)  ---> parametrized constructor

参数化构造函数的示例:

                                   cube(int l,int w,int h)
                                   {
                                           length=l;
                                           width=w;
                                           height=h;
                                    }

这里你定义了两个具有相同类名的构造函数,称为构造函数重载(具有不同参数的多个构造函数)

第一名:

          cube()
          {
             lenght = 10;
             widht = 20;
             height = 30;
           }

第二个:

            cube(int l, int w, int h)
            {
             lenght = l;
             widht = w;
             height = h;
             }

所以这里你定义了两个构造函数来初始化object的全局变量。现在,希望你知道只有一个构造函数一次工作来初始化对象,你必须在对象创建过程中调用该构造函数。

这里你创建了两个对象:

第一个对象:               立方体x =新立方体(没有参数传递); //没有传递参数

在上面的行构造函数中调用了多维数据集,它初始化全局变量长度widht,高度值为10,20,30。现在,这里我们没有将任何参数传递给构造函数,因此没有参数的构造函数被调用,即cube()

第二个对象:                立方体y =新立方体(20,20,20);

这里构造函数cube(int l,int w,int h)已被调用,因为这里我们定义了三个参数 - > int l,int w,int h,并且在调用构造函数时我们传递了三个参数 - &gt ; 20,20,20 so参数与参数匹配,参数化构造函数调用。

所以这里存在两个对象,对象x的值长度= 10,widht = 20,heigth = 30。 和其他对象y的值长度= 20,宽度= 20,高度= 20;