Проблемы в написании конструкторов - PullRequest
0 голосов
/ 04 апреля 2020

(впервые попрактикуйтесь после изучения OOP концепций. Go немного легко в ответах)

(я просто следую инструкциям из домашней работы "проверь свои навыки"; поэтому я не обсуждаю логика других классов и файлов)

Мне нужно добавить 3 конструктора в один класс, который сам по себе расширен от родительского класса.

Первый конструктор использует те же параметры конструктора из родительского класса .

Второй и третий конструктор продолжают добавлять параметры соответственно.

Я не понимаю синтаксис тела 2-го и 3-го конструкторов.

public class House 
   extends Building {

// TODO - Put your code here.
private String mOwner;
private boolean mPool;

//This constructor exists in Building class. So, I can use it here with super keyword. Right?
public House(int length, int width, int lotLength, int lotWidth){
    super(length, width, lotLength, lotWidth);
}

//Is using "this" keyword okay here? I am just using the constructor existing in this file.
public House(int length, int width, int lotLength, int lotWidth, String Owner){
    this(length, width, lotLength, lotWidth);
    mOwner = Owner;
}

// Is this right?
public House(int length, int width, int lotLength, int lotWidth, String Owner, boolean pool){
    this(length, width, lotLength, lotWidth, Owner);
    mPool = pool;
}

}

1 Ответ

1 голос
/ 04 апреля 2020

Эта концепция называется цепочкой конструктора

Например, идея в том, что если бы мы хотели инициализировать здание, и мы не знали, хотим ли мы, чтобы оно уже имело пул? Если наш конструктор для этого класса требует от нас ввести значение для логического пула, мы можем столкнуться с проблемами.

Так что цепочка конструктора полезна, потому что мы все равно сможем инициализировать здание, еще не зная всей информации.

мы бы просто использовали этот конструктор, если бы не знали, нужен ли нам пул:

public House(int length, int width, int lotLength, int lotWidth, String Owner)

Все, что вы написали, в порядке. Вызовы this () в порядке. Если вам все еще неясно - https://beginnersbook.com/2013/12/java-constructor-chaining-with-example/

...