У меня есть следующий код«не может ссылаться на Employee.DEFAULT_GENDER перед тем супертипом конструктор был назван» Ошибкой
public class Employee {
private String name;
private String gender;
private int age;
final String DEFAULT_GENDER = "male";
final int DEFAULT_AGE = 18;
public Employee(String name,String gender,int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public Employee(String name) {
this(name,DEFAULT_GENDER,DEFAULT_AGE);
}
}
Я получаю следующее сообщение об ошибке
Cannot reference Employee.DEFAULT_GENDER before supertype constructor has been called
Я не понимаю, почему это говоря Employee.DEFAULT_GENDER
? Я не определил его как статичный! и почему это не позволяет мне вызвать конструктор с 3 параметрами? Я определил DEFAULT_GENDER
и DEFAULT_AGE
, чтобы обеспечить некоторые значения по умолчанию. Все, что вам нужно для создания объекта Employee, - это его имя (пол и возраст в этом случае имеют значение по умолчанию. Также не разрешен конструктор по умолчанию). Любые мнения о том, почему это происходит?
бы делает его статичным решить эту проблему? статические переменные инициализируются при загрузке класса. –
@AniketThakur этот ответ правильный, сделайте их статичными, они принадлежат классу скорее к объекту +1 – nachokk
Большое спасибо. что работало, но только из любопытства, есть ли работа, если мне нужны значения по умолчанию на уровне объекта, а не на уровне класса? –