Предполагается, что конструктор включает в себя аргумент (т.е. public NLP(String[] data)
), как показано в описании API, поэтому, на мой взгляд, ваша реализация (как указано в нижней части вопроса) просто в порядке.
Однако я думаю, что ваш общий вопрос о том, как связаны конструктор и внутренние данные вашего класса:
Данные (или состояние) классахранится в одной или нескольких переменных (иногда их также называют членов , полей или атрибутов ) - в вашем случае String[] data
. Общая концепция объектно-ориентированного программирования состоит в том, чтобы сохранять члены частными и получать к ним доступ только через методы открытого интерфейса (такие как методы получения и установки). Это известно как инкапсуляция .
Конечно, также возможно определение конструктора без аргумента, но он может инициализировать класс только с некоторыми фиксированными значениями. В вашем случае намерение состоит в том, чтобы инициализировать внутренний элемент data
с аргументом, передаваемым конструктору (который также называется data
).
Наконец, многие языки программирования (включая Java) допускают перегрузку конструкторов, поэтому вы можете, например, иметь один конструктор с аргументами, а другой - без аргументов. Вот полезное введение.