我不是Java人,所以我问自己这意味着什么:
public Button(Light light) {
this.light = light;
}
按钮是一种方法吗?我问自己,因为它需要一个输入参数灯。但如果它是一种方法,为什么它会以大写字母开头并且没有返回数据类型?
以下是完整的例子:
public class Button {
private Light light;
public Button(Light light) {
this.light = light;
}
public void press() {
light.turnOn();
}
}
我知道,这个问题真是微不足道。但是,我与Java没有任何关系,也没有找到上面关于Button的描述。我只是感兴趣。
答案 0 :(得分:11)
按钮是constructor。
答案 1 :(得分:11)
这是一个非常有效的问题。
你认为它是一种方法构造函数,它基本上具有你刚刚提到的特征:
Button
(大写没有什么特别,但是编码约定,java类应该以大写开头,因此构造函数也以大写字母开头)关于您发布的代码的其他说明。
如果没有定义构造函数,编译器将为您插入一个无参数构造函数:
所以这是有效的:
public class Button {
// no constructor defined
// the compiler will create one for you with no parameters
}
.... later
Button button = new Button(); // <-- Using no arguments works.
但是如果你提供另一个构造函数(就像你的情况一样),就不能再使用no args构造函数了。
public class Button(){
public Button( Light l ){
this.light = l;// etc
}
// etc. etc.
}
.... later
Button b = new Button(); // doesn't work, you have to use the constructor that uses a Light obj
答案 2 :(得分:3)
它是constructor。
创建类的实例时,必须将light作为参数传递。
例如
Light l = new Light();
Button b = new Button(l);
b.press();
答案 3 :(得分:2)
答案 4 :(得分:2)
它是Button类的可能构造函数之一。 每个包含类名称且没有返回值的语句都是构造函数。
您可以定义多个构造函数,例如用于区分参数的数量和类型:
public Button();
public Button(int i);
public Button(int i, int j);
public Button(String s,int i, double d);
等等。
答案 5 :(得分:0)
Button是一个构造函数
答案 6 :(得分:0)
它是一个用Button类编写的自定义构造函数,它接受输入参数作为自定义变量Light。
因此,在Button
类中,您将拥有两个构造函数:
Button bt = new Button();
Button bt = new Button( Light l)
初始化期间的输入参数。