#java #oop #superclass
Вопрос:
Я собираюсь попробовать это еще раз. Мне нужна помощь. Очевидно, я сделал что-то не так со своим кодом. Я попытался обратиться сюда за помощью, но мой вопрос был закрыт, и мне сказали перейти на проверку кода. Я разместил свой вопрос на их сайте, и они отказываются помогать, потому что говорят, что я не следую инструкциям по проблеме, которую мне дали. Я не знаю, что я делаю не так, и если никто не хочет помочь, как я должен учиться? Итак, я снова возвращаюсь к вопросу, отредактированному так, чтобы, надеюсь, на этот раз он пройдет.
Мне была поставлена следующая задача:
Вы вернулись во времени в Афины 500 г. до н. э., и Сократ хочет, чтобы вы создали для него приложение, которое поможет классифицировать животных.
- Создайте классы «Животное», «Кошка» и «Ошибка».
- Определите свойства «цвет» и «порядковый номер» для соответствующих и необходимых классов. Пусть они будут инициализированы в конструкторе.
- Добавьте функциональность, которая позволила бы нам вызывать метод «перемещение» с классами Cat и Bug. Пусть метод вернет строку «Я двигаюсь с» номер ноги » ноги!», при этом «номер ноги» будет номером ноги, как указано в классе.
- Добавьте новый класс под названием Bird. Добавьте свойство «номер крыла». Добавьте функциональность, которая позволила бы нам вызывать метод «перемещение» с классом Bird. Пусть метод вернет строку «Я двигаюсь с» номер ноги » ноги!», если номер крыла не имеет применимого значения. Если wing_number имеет применимое значение, верните строку «Я лечу».
Мой код для этого выглядит следующим образом:
public class SocratesApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat myCat = new Cat("orange", 4);
int catLegs = myCat.leg_number;
myCat.move(catLegs);
Bug myBug = new Bug("green", 16);
int bugLegs = myBug.leg_number;
myBug.move(bugLegs);
Bird bird1 = new Bird("yellow", 2, 2);
int bird1Legs = bird1.leg_number;
int bird1Wings = bird1.wing_number;
bird1.move(bird1Legs, bird1Wings);
Bird bird2 = new Bird("brown", 2, 0);
int bird2Legs = bird2.leg_number;
int bird2Wings = bird2.wing_number;
bird1.move(bird2Legs, bird2Wings);
}
}
class Animal {
private String color;
private int leg_number;
public Animal(String color, int leg_number) {
this.color = color;
this.leg_number = leg_number;
}
public void move(int leg_number) {
System.out.println("I'm moving with " leg_number " legs!");
}
}
class Cat extends Animal {
String color;
int leg_number;
public Cat(String color, int leg_number) {
super(color, leg_number);
this.color = color;
this.leg_number = leg_number;
}
@Override
public void move(int leg_number) {
System.out.println("I'm moving with " leg_number " legs!");
}
}
class Bug extends Animal {
String color;
int leg_number;
public Bug(String color, int leg_number) {
super(color, leg_number);
this.color = color;
this.leg_number = leg_number;
}
@Override
public void move(int leg_number) {
System.out.println("I'm moving with " leg_number " legs!");
}
}
class Bird extends Animal {
String color;
int leg_number;
int wing_number;
public Bird(String color, int leg_number, int wing_number) {
super(color, leg_number);
this.color = color;
this.leg_number = leg_number;
this.wing_number = wing_number;
}
public void move(int leg_number, int wing_number) {
if (wing_number > 0) {
System.out.println("I'm flying");
} else {
System.out.println("I'm moving with " leg_number " legs!");
}
}
}
Кто-то сказал мне, что я не применяю метод move (), как того требуют инструкции, но они не скажут мне, что я делаю неправильно. Наверное, я не понял инструкций. Мне нужен кто-то, кто скажет мне, что я делаю неправильно и как это исправить. Это ОЧЕНЬ ВАЖНО. Кто-нибудь, пожалуйста, помогите мне с этим?
Комментарии:
1. Я не думаю, что вы действительно хотите передавать количество ног
move()
методу: кошка не будет двигаться с 89 ногами, но ваш метод в настоящее время позволяет это. Удалите параметр и используйте значениеleg_number
поля.2. Я вижу, что в проблеме есть ошибка, так как я ее скопировал. Должно быть, это связано с тем, что в проблеме используются знаки «больше» и «меньше». Я исправлю это.
3. Да, вам было сказано перейти на проверку кода , потому что этот обмен предназначен для неработающего кода. Обзор кода предназначен для рабочего кода, которому нужны мнения о том, как его можно улучшить. Если ваш код не работает, подробно объясните, в чем заключается ошибка, с которой вы столкнулись, каково ожидаемое поведение, что он делает/не делает. Нам не нужен весь текст задания.
4. Что ж, похоже, что никто из совета директоров не собирается мне помогать, так что, думаю, я просто облажался.
5. Каждый объект знает, сколько у него ног, поэтому, как уже говорилось,
move
метод вообще не должен иметь такого параметра. Просто создайтеpublic void move()
метод. Поскольку вашAnimal
класс уже объявляет aprivate String color;
иprivate int leg_number;
поле, подклассам нет необходимости объявлять их снова. Они уже наследуют поля, просто сделайте ихprotected
вместоprivate
, чтобы подклассы могли получить к ним доступ.