как мне инициализировать частные переменные в другом конструкторе с другими параметрами

avatar
WetFeet
1 июля 2021 в 16:34
52
0
0

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

public class BigCity {

private char[][] grid;
private int numBoxes;
private int numCheese;
private int[][] cheesePos;

private int countMove;
private int countCrumb;
private boolean stillLoose;
public BigCity(int rows, int cols ,int numBoxes, int numCheese, int[][] cheesePositions){
    //initializing the grid
    grid = new char[rows][cols];
    this.numBoxes= numBoxes;

    cheesePos= cheesePositions;
    //initializing the cheese Positions (they are coordinates so columns are never more than two)
    cheesePositions= new int[numCheese][2];
    countMove =0;
    countCrumb=0;
    this.numCheese= numCheese;
    //calling fillGrid method
    fillGrid();
}
//test phase 2
public BigCity(String fileName) {
    // this();
}
Источник
Alan
1 июля 2021 в 16:38
0

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

user2711811
1 июля 2021 в 16:45
1

Посмотрите на блок Initializer — общий код для всех конструкторов класса — выполняется перед каждым отдельным конструктором, и поэтому каждый конструктор затем выполняет пользовательскую инициализацию. Синтаксически это пустой {...} : docs.oracle.com/javase/tutorial/java/javaOO/initial.html

Ответы (0)