это относится к текущему объекту.
Когда вы создаете объект как new Student5(222,"Morty",25);
, он вызывает конструктор класса Student5, который имеет параметры (int, String, int)
т.е. new Student5(int,String,int);
, в вашем случае это
public Student5(int i,String n,int a){
this(i, n);
id = i;
name = n;
age=a;
}
теперь вы можете использовать i, n, a для инициализации переменных.Конечно, вы сделали это, но вы присваиваете значения дважды в следующих шагах
this(i, n);
id = i;
name = n;
age=a;
, теперь измените его на
public Student5(int i,String n,int a){
this(i, n);
age=a;
}
здесь это (i, n) проверяет custroctor с Student5 (intСтроковые) типы.Итак, он переходит к приведенному ниже коду и выполняет инициализацию, если вы пропустите конструктор, он выдаст ошибку компиляции.
public Student5(int i,String n){
id = i;
name = n;
}
display () выводит выходные данные в зависимости от того, какой объект вы вызываете методом.
Student5 s1 = new Student5(111,"Rick");
s1.display()
печатает 111 Рик.поскольку вы вызываете display на s1, он не знает о данных объекта s2
Student5 s2 = new Student5(222,"Morty",25);
s2.display()
печатает 222 Morty 25
, поскольку вы вызываете display на s2, он не знает об объекте s1data
, чтобы ответить на ваш вопрос "если возможно получить 111 Rick & 222 Morty 25."
yes, вы можете сделать это в основном методе, поскольку у вас есть оба доступных объекта.вызовите метод отображения для двух объектов.