Не получается понять причину, почему не работает сетер. Выставил значение в сетере - а результат инициализации всё равно 0
import java.util.Arrays;
public class Data {
int qid, qcid, qscid, srvid, srvvar;
int[] data_quest = new int[qid];
int[] data_serv = new int[srvid];
public static void main(String[] args) {
System.out.println("Start Main class");
Questions questions = new Questions();
questions.setQuestionsID(20);
System.out.println(questions.getQuestionsID());
Services services = new Services();
services.setServiceID(10);
System.out.println(services.getServiceID());
Data data = new Data();
System.out.println(Arrays.toString(data.data_serv)); // Почему-то в data_serv 0, вместо указаного в сетере 20.
System.out.println(Arrays.toString(data.data_quest)); // Почему-то в data_quest 0, вместо указаного в сетере 10.
}
}
class Questions extends Data {
/*Getters and Setters*/
void setQuestionsID(int qid){
this.qid = qid;
}
void setQuestionsCategory(int qcid){
this.qcid = qcid;
}
void setQuestionsSubCategory(int qscid) {
this.qscid = qscid;
}
int getQuestionsID() {
return qid;
}
int getQuestionsCategory() {
return qcid;
}
int getQuestionsSubCategory(){
return qscid;
}
}
class Services extends Data {
/*Getters and Setters*/
void setServiceID(int srvid){
this.srvid = srvid;
}
public void setServiceVariation(int srvvar){
this.srvvar = srvvar;
}
int getServiceID() {
return srvid;
}
public int getServiceVariation() {
return srvvar;
}
}
Скорее всего Вам нужно сделать что-то подобное
//объявляем
int[] arr;
public void setArr(int size){
//инициализируем
arr = new int[size];
}
таким образом массив инициализируется только когда Вы вызовите сеттер. Хотя это не совсем сеттер. Сеттер для массива будет выглядеть следующим образом
int[] arr;
public void setArr(int[] a){
arr = a;
}
Все правильно. Смотрите, что происходит
// Создали новый объект класса Questions
Questions questions = new Questions();
// В этом объекте присвоили полю qid значение 20
questions.setQuestionsID(20);
System.out.println(questions.getQuestionsID());
// Создали новый объект класса Services
Services services = new Services();
// В этом объекте присвоили полю srvid значение 10
services.setServiceID(10);
System.out.println(services.getServiceID());
// Создали новый объект класса Data
Data data = new Data();
// Пытаемся вывести значения полей по умолчанию
System.out.println(Arrays.toString(data.data_serv));
System.out.println(Arrays.toString(data.data_quest));
После вызова конструкторов new Questions()
и new Services()
, происходит инициализация состояний объектов значениями по умолчанию. Т.к. оба класса являются производными от Data
, то при создании дочерних объектов, неявно вызывается конструктор класса Data
и его поля тоже инициализируются начальными значениями.
По умолчанию int qid = 0
, значит и data_quest.length = 0
, то есть у вас всегда будет массив с 0 элементами.
Для решения проблемы, присваивайте значение ссылки в сеттере, как написал Stanislav Tun, а не при объявлении
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
В общем, нужно выводить среднее арифметическое в activity 3
Три взаимосвязанные сущности: города (City), улицы (Street), жители (People)