所以,我在学习了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) ?
答案 0 :(得分:1)
它将查找与您正在调用的构造函数匹配的构造函数
x
cube的构造为零参数,因此将选择no-arg构造函数
y
cube由三个参数构成,因此将选择three-arg构造函数。
答案 1 :(得分:1)
显示程序的输出会有所帮助,这有助于调试。
宽度,长度和长度拼写使用:'th',而不是'ht'。这不会影响您的程序编译或运行的方式,但会帮助其他人阅读您的代码。
在直接回答您的问题时,您有两个重载的构造函数:
立方(); 立方体(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;