вопрос о Java: действительно ли это - метод?

Я не парень 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 и не нашел описание для вещи Кнопки выше. Мне просто интересно.

5
задан OscarRyz 17 March 2010 в 18:28
поделиться

6 ответов

Button является конструктором .

11
ответ дан 18 December 2019 в 05:49
поделиться

Это вполне уместный вопрос.

То, что вы видите, это конструктор метода , который в основном имеет характеристики, которые вы только что упомянули:

  • Не имеют возвращаемого типа (потому что он создает экземпляр класса)
  • Они назван в честь имени класса, в данном случае это 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.

Но если вы предоставите другой конструктор (как в вашем случае), вы можете ' t больше не использовать конструктор без аргументов.

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
11
ответ дан 18 December 2019 в 05:49
поделиться

Его конструктор .

Вы должны передать свет в качестве параметра при создании экземпляра класса.

Например,

Light l = new Light();
Button b = new Button(l);
b.press();
3
ответ дан 18 December 2019 в 05:49
поделиться

Это один из возможных конструкторов класса Button. Каждый оператор, который содержит имя класса и не имеет возвращаемого значения, является конструктором.

Вы можете определить несколько конструкторов, например, для различения количества и типа параметров, таких как:

public Button();
public Button(int i);
public Button(int i, int j);
public Button(String s,int i, double d);

и так далее.

2
ответ дан 18 December 2019 в 05:49
поделиться

Это конструктор для объекта Button.

Итак, когда вы пишете:

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

Этот метод называется

2
ответ дан 18 December 2019 в 05:49
поделиться

Кнопка - это конструктор

0
ответ дан 18 December 2019 в 05:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: