Параметрический конструктор, в чем разница?

#java #parameters #constructor

#java #параметры #конструктор

Вопрос:

В настоящее время я рассматриваю в целом (два) способа создания конструкторов, как стандартных, так и параметризованных, и я хотел бы спросить, в чем разница между этими двумя примерами.

Пример A:

 public class dog {

    private String dogName;

    public dog() {
        dogName = "Toby";
    }

    public String getDogName() {
        return dogName;
     }

    public static void main(String args[]) {
        Dog object = new Dog();
        System.out.println(object.getDogName());
    }
}
  

Пример B:

 public class dog {

    private String dogName;
    public dog (String dogName) {
        this.dogName = dogName;
    }

    public static void main(String args[]) {
        Dog object = new Dog();
        System.out.println(object.getDogName());
    }

    public static void main (String[] args) { 
        Dog object = new Dog("Toby"); 
        System.out.println(object.dogName); 
    } 
}
  

Комментарии:

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

2. @Rono это за пределами моего понимания, у вас есть пример того, что такое «динамическое построение»?

3. Второй дает вам больше гибкости в том смысле, что вы можете создавать разные экземпляры Dog и присваивать им разные имена, где в качестве первого типа создаются разные экземпляры Dog по имени Toby.

4. Пример A — Всех собак зовут Тоби. Пример B — Dogs получают данное им имя. Конструкторы параметров означают, что вы можете настраивать некоторые поля при построении. Dog dog = new Dog("Toby"); Конструкторы по умолчанию нуждаются в настройке после создания объекта Dog dog = new Dog(); dog.Name="Toby";

Ответ №1:

Пример A:

 public Dog() {
    dogName = "Toby";
}
  

Вы жестко кодируете «Toby» здесь. Итак, каждый раз, когда вы создаете экземпляр объекта типа Dog, dogName будет инициализироваться значением «Toby» в качестве значения по умолчанию, потому что у вас нет возможности динамически передавать данные во время создания экземпляра объекта с new ключевым словом.


Пример B:

 public Dog(String dogName) {
    this.dogName = dogName;
}
  

Вы динамически передаете значение каждый раз, когда создаете объект типа Dog. Каждый раз, когда вы это делаете, dogName будет инициализироваться тем, что вы передаете в качестве аргумента в constructor.