Не можете объявить приватные переменные в конструкторе?

1

Я программирую на Java, и мне сложно получить следующий код для компиляции. Ошибка (незаконный запуск выражения) появляется на

private final int YA;

Однако, когда я удаляю частный модификатор по всем переменным, он компилируется отлично.

Я не смог найти решение в Интернете, и большинство моих поисков заканчиваются вопросами о том, чтобы сделать конструкторы частными (чего я не пытаюсь сделать). Что действительно меня заводит, я написал еще один класс, который следует за тем же форматом, частные конечные переменные в конструкторе, и он компилируется без проблем.

Я новичок в Java, поэтому мне не хватало чего-то, что действительно было проклято здесь. Если да, будьте осторожны.

Приветствия и благодарности.

public class IndividualTaxCalculator {

    IndividualTaxCalculator(int inYearAssessment) {

        private final int YA;
        YA = inYearAssessment;

        switch (YA) {

            case 2013:

                private float netEmploymentIncome;      // BTC cell H16
                private float totalIncome;              // BTC cell H27
                private float assessableIncome;         // BTC cell H31
                private float chargeableIncome;         // BTC cell H49
                private float taxPayableOnChargeable;   // BTC cell H51
                private float incomeTaxRebate;          // BTC cell H53
                private float taxPayableAfterRebate;    // BTC cell H55
                private float parenthoodTaxRebate;      // BTC cell H57
                private float netTaxPayable;            // BTC cell H59

                break;

        }

    }

}
Теги:
constructor

4 ответа

4
Лучший ответ

Переместите элемент вне конструктора:

private final int YA;

IndividualTaxCalculator(int inYearAssessment) {
  YA = inYearAssessment;
  // ..
}

И, пожалуйста, не назовите нестатический элемент в прописных буквах. Они используются для констант.

использование

private final int ya;

вместо.

  • 0
    Финалы также не пишутся с большой буквы?
  • 0
    Я никогда не видел final написанный заглавными буквами.
Показать ещё 3 комментария
0

Когда вы создаете класс в Java, его переменные-члены должны быть объявлены внутри класса, но вне любых методов. Переменные-члены - это те, к которым вы хотите получить доступ в любом методе своего класса, и те, которые нуждаются в модификаторах доступа, таких как частные.

Поэтому, что я хотел бы предложить для вашего кода, было бы переместить все ваши переменные в объявлении вне конструктора и инициализировать их в конструкторе, если YA == 2013. Итак, для реорганизации вашего кода немного:

public class IndividualTaxCalculator {
    private float netEmploymentIncome;      // BTC cell H16
    private float totalIncome;              // BTC cell H27
    private float assessableIncome;         // BTC cell H31
    private float chargeableIncome;         // BTC cell H49
    private float taxPayableOnChargeable;   // BTC cell H51
    private float incomeTaxRebate;          // BTC cell H53
    private float taxPayableAfterRebate;    // BTC cell H55
    private float parenthoodTaxRebate;      // BTC cell H57
    private float netTaxPayable;            // BTC cell H59

    IndividualTaxCalculator(int inYearAssessment) {
        switch (inYearAssessment) {
            case 2013:
                // Initialize the variables here

                break;
        }
    }
}
0

Вы можете использовать только частный/общественный/защищенный член

public class IndividualTaxCalculator {
    private int foo;
    private int bar;
    ....
}

Пока вы объявляете переменную в методе, к переменной можно обращаться только в методе.

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню