Еще раз взглянем на ваш конструктор:
public Animal(int type, int size)
{
this.type = type;
this.size = size;
}
Это означает, что type
и size
являются элементами данных вашего Animal
class
, что означает, что любой экземпляр Animal
имеет type
или size
. this.type
не переменная, а скорее элемент данных объекта, который похож на переменную в силу своей изменчивости, но это неотъемлемый атрибут объекта. Если вы делаете что-то вроде
Animal animal = new Animal(1, 1);
, и тогда вы не можете достичь animal.type
, это означает, что animal.type
- это не public
, а private
или protected
. Вы бы смогли добраться до него, если бы оно было public
. Однако не меняйте его на public
, это хорошо, если вы защищаете свои поля от некоторых проблемных c обращений, которые я сейчас не описываю. Вместо этого вы можете определить методы получения, например
public int getType() {
return this.type;
}
public int getSize() {
return this.size;
}
или некоторые свойства только для чтения и получить значения по ним.