你会在这个项目中改变什么?(JAVA)

Bon*_*t09 2 java

 public class Zoo{
    public static void main (String[] args){
        Animal animal1 = new Animal ("Giraffe", 5, 'M');
        Animal animal2 = new Animal ("Lion", 10, 'F');

        System.out.println (animal1.getName () + " " + animal1.getAge () + " " + animal1.getGender ());
        System.out.println (animal2.getName () + " " + animal2.getAge () + " " + animal2.getGender ());
    }


 }
    class Animal{
        private int age;
        private char gender;
        private String name;

        public Animal(){
            this.name = "Giraffe";
            this.age = 5;
            this.gender = 'M';
        }

        public Animal (String name, int age, char gender){
            this.name = name;
            this.age = age;
            this.gender = gender;
        }

        public void setName (String name){
            this.name = name;
        }

        public String getName (){
            return name;
        }

        public void setGender (char gender){
            this.gender = gender;
        }

        public char getGender(){
            return gender;
        }

        public void setAge (int age){
            this.age = age;
        }

        public int getAge (){
            return age;
        }
    }
Run Code Online (Sandbox Code Playgroud)

您是否会认为此代码是正确的并且显示封装的概念?谢谢 :)

duf*_*ymo 7

这是学生代码.

一些建议:

  1. 我将Gender列为枚举.我可以将任何字符串传递给你的构造函数.
  2. 我在你的Animal中重写了equals,hashCode和toString.谷歌为"Joshua Bloch第3章"了解如何.
  3. 什么,没有继承?这似乎是学生的经典之作.


Wil*_*iam 6

您可以考虑添加验证以确保Animal不能处于无效状态.即IllegalArgumentException如果有人试图设定负面年龄等,则抛出


Cod*_*nci 5

一个问题,你不应该重复你的System.out.println代码.您应该在Animal类中使用toString方法.

另一个问题.You Zoo应该有一个动物列表,而不是自己明确创建它们.

尝试进行这些更改,如果您遇到问题,我会给您更多建议.我不愿意提供实际的代码解决方案,因为这看起来像是我的作业.