You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java面向对象动物分类代码中move()方法的正确实现方式

代码问题说明
  • 核心功能不符合要求:题目明确要求move()方法返回字符串,你当前实现的move()是void无返回值类型,仅直接打印内容,完全不符合返回值要求。
  • 方法参数设计错误:题目要求move()使用对应类自身存储的leg_number、wing_number属性值,不需要额外传入参数,你给所有move()都加了多余的入参,调用时还要手动传属性值,逻辑冗余且不符合要求。
  • 类属性设计冗余:父类Animal已经定义了color和leg_number属性,子类Cat、Bug、Bird重复定义同名属性属于无意义的属性隐藏,且父类属性为private修饰,子类无法直接访问,修正时将父类属性修饰符改为protected允许子类直接访问即可。
  • Bird类move方法不符合重写规则:Bird的move()参数列表和父类不一致,不属于方法重写,且逻辑中使用的是传入的参数值,而非自身实例存储的wing_number属性。
  • 主方法存在笔误:测试bird2时错误调用了bird1.move(),实际应该调用bird2.move()。
修正后完整代码
public class SocratesApp {
    public static void main(String[] args) {
        Cat myCat = new Cat("orange", 4);
        System.out.println(myCat.move());
    
        Bug myBug = new Bug("green", 16);
        System.out.println(myBug.move());
    
        Bird bird1 = new Bird("yellow", 2, 2);
        System.out.println(bird1.move());
    
        Bird bird2 = new Bird("brown", 2, 0);
        System.out.println(bird2.move());
    }
}

class Animal {
    protected String color;
    protected int leg_number;

    public Animal(String color, int leg_number) {
        this.color = color;
        this.leg_number = leg_number;
    }

    public String move() {
        return "I'm moving with " + leg_number + " legs!";
    }
}

class Cat extends Animal {
    public Cat(String color, int leg_number) {
        super(color, leg_number);
    }

    @Override
    public String move() {
        return "I'm moving with " + leg_number + " legs!";
    }
}

class Bug extends Animal {
    public Bug(String color, int leg_number) {
        super(color, leg_number);
    }

    @Override
    public String move() {
        return "I'm moving with " + leg_number + " legs!";
    }
}

class Bird extends Animal {
    protected int wing_number;

    public Bird(String color, int leg_number, int wing_number) {
        super(color, leg_number);
        this.wing_number = wing_number;
    }

    @Override
    public String move() {
        if (wing_number > 0) {
            return "I'm flying";
        } else {
            return "I'm moving with " + leg_number + " legs!";
        }
    }
}

内容的提问来源于stack exchange,提问作者apex2022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:06:06