java问题:这是一种方法吗?

时间:2010-03-17 18:18:00

标签: java class oop variables

我不是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的描述。我只是感兴趣。

7 个答案:

答案 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)

Button对象是constructor

所以当你写:

Button myButton = new Button(new Light());

该方法被称为

答案 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类中,您将拥有两个构造函数:

  1. 默认,即Button bt = new Button();
  2. 参数,即我们需要传递的Button bt = new Button( Light l)
  3. 初始化期间的输入参数。