Не делайте переменную имени статической.Это будет означать, что он принадлежит классу, а не объекту Animal
, то есть в классе будет только один Animal.name
.Ваши переменные Cat.sound
, Cat.favoriteToy
также являются статическими, что будет означать, что у всех кошек будет одинаковый звук и одна и та же любимая игрушка (думаю, это приемлемо, но не назначайте это в конструкторе).
Сеттеры не должны иметь возвращаемого значения (вы меняете только некоторую переменную).Например:
public void setName(String newName) {
this.name = newName;
}
Геттерам не нужны никакие параметры.Вы уже знаете, что вернуть, нет необходимости в параметре.Например:
public String getSound() {
return this.sound;
}
Кроме того, ваш Animals
должен быть Animal
, так как этот класс представляет отдельное животное.
Если вы создаете объект Cat
, это автоматическибыть Animal
(наследуется), так что нет необходимости создавать оба, как вы делаете в вашем основном методе
Cat myCat = new Cat("Purr","meow","ball"); //create cat
System.out.println(myCat.getName());
переменные являются статическими, поэтому у всех кошек теперь будет это имя, звук и любимая игрушка...