Проблема с наследованием и методами

150
14 декабря 2018, 22:30

Есть класс Animal и сабкласс Cat, хочу, чтоб Cat принимал имя и ограничение на максимальное расстояние для бега.

Но созданный метод выводит всегда результат "бежит" при любом отрицательном параметре расстояния и "не может бежать" при любом положительном параметре. Не пойму, как исправить?

Класс Animal:

public class Animal {
    protected String name;
    protected boolean canRun = true;
    protected boolean canSwim = true;
    protected boolean canJump = true;
    protected int maxRunLength;
    protected double maxJumpHeigth;
    protected int maxSwimLength;
    protected int length;
    protected double jump;

    public Animal(){
    }
    public  Animal(String name) {
        this.name = name;
    }
    public void run(int length) {
        if (length <= this.maxRunLength) {
            System.out.println(this.name + " is running");
        } else {
            System.out.println("can`t run");
        }
    }
}

Класс Cat:

public class Cat extends Animal {
    protected int maxRunLength;
    protected double maxJumpHeigth = 2;
    protected boolean canSwim = false;
    public Cat(){
    }
    public Cat(String name, int maxRunLength) {
        this.name = name;
        this.maxRunLength = maxRunLength;
    }
}
Answer 1

У вас не меняется переменная length у Animal, а если она не меняется, то результат условия if (this.length <= this.maxRunLength) тоже будет постоянным.

public void run(int length) {
    this.lenght += length;
    if (this.length <= this.maxRunLength) {
        System.out.println(this.name + " is running");
    } else {
        System.out.println("can`t run");
    }
}

А если вам и нужен постоянный результат при неизменном length (то есть просто хотите отсекать значения больше maxRunLength, то у вас еще this.maxRunLength не инициализирована, то есть всегда равна 0. Из-за этого и любое положительное отсекает, тк оно больше 0.

READ ALSO
как включить обычный класс в DI

как включить обычный класс в DI

собственно сабж, как из обычного класса использовать @Inject? как я понимаю для этого класс должен находится контексте или иными словами контекст...

135
Вывод элемента из массива объектов

Вывод элемента из массива объектов

Как выполнить вывод всех элементов из ячейки массива объектов? Допустим, если мне нужно имя, то пишу arr[0]name

138
Можно ли совместить работу на Cи c Java?

Можно ли совместить работу на Cи c Java?

Есть проект на чистом СиОн выходит в сеть, что-то делает и тому подобное

149
как добавить скрол в этот код

как добавить скрол в этот код

при заполнении таблицы она уходит далеко за форму, а скрола нету, как добавить скрол?

125