Инициализация финальных атрибутов по умолчанию в абстрактном классе Java - PullRequest
0 голосов
/ 08 мая 2018

У меня есть абстрактный класс, который должен иметь атрибут (int), который не может быть изменен после инициализации, и для него предварительно установлено значение 1; Каков наилучший способ сделать это? Должен ли я сделать это окончательно? Требование состоит в том, что внутри класса у меня будет один и только один конструктор (с параметрами), и нет сеттеров. Если так, как мне сделать его 1 по умолчанию, если он окончательный и (я полагаю) я собираюсь инициализировать его в конструкторе? Спасибо!

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

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

Например, если ваша переменная должна всегда быть 25, вы можете сделать что-то вроде этого:

public abstract class Test
{
  protected final int pressure = 25;

  //Constructor
  public Test()
  {
    // TODO Auto-generated constructor stub
  }
}

Но если вы оцениваете значение во время выполнения, вам нужно установить его в конструкторе объекта:

public abstract class Test
{
  protected final int pressure;

  //Constructor
  public Test(int pressure)
  {
    this.pressure = pressure;
  }
}

Обратите внимание, что в этом случае переменная не должна назначаться ранее!

Вопрос о том, следует ли использовать конечную переменную, зависит от ее цели. Финальная переменная может быть назначена только один раз за все время ее существования. Если вам нужно изменить его каким-либо образом, вам не следует его использовать.

0 голосов
/ 08 мая 2018

Вы можете использовать перегрузку конструктора для достижения этой цели.Смотрите пример:

public abstract class TestClass{

  private final int otherParam;
  private final int fixedParam;

  public TestClass(final int otherParam){
    this.otherParam = otherParam;
    this.fixedParam = 1;
  }

  public TestClass(final int otherParam, final int fixedParam){
    this.otherParam = otherParam;
    this.fixedParam = fixedParam;
  }

}
0 голосов
/ 08 мая 2018

Вы должны использовать конструктор с параметрами, чтобы установить ваши начальные значения. Тогда, как вы говорите, не создавайте сеттер и убедитесь, что ваши поля закрыты, чтобы никто не мог получить к ним доступ.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...