Why do birds fly south for the winter? It’s too far to walk.
/**
* This is a constructor -- it simply creates a new Animal (an "instance") that
* you can do things with.
*
* this means "of the Animal you're doing something with."
* In this case, we use this to set the state of our new
* Animal to the parameters provided when we made the new
* Animal.
*/
public Animal(String color, String name, String favoriteFood){
this.color = color;
this.name = name;
this.favoriteFood = favoriteFood;
hungerLevel = 10;
}
//These are the methods ("behaviors" of an animal) all Animals should have.
/**
* All Animals should eat, and let's say that all Animals eat the "same way."
* This means that we can define how an Animal eats now, because it applies
* to all Animals.
*/
public void eat(){
if(hungerLevel > 0){
hungerLevel -= 1;
System.out.println(name + " is eating " + favoriteFood);
}
else{
System.out.println(name + " is full!");
}
}
/**
* We want to be able to get the values of all of the Animal's traits.
* Because we made our state private, we need to use getters, which
* simply return state.
* Without getters, nothing outside of this file can see private things!
* This is a getter for color!
* In reality, we would write getters for name, favoriteFood, and hungerLevel too.
*/
public String getColor(){
return color;
}
public String getName(){
return name;
}
/**
* abstract means that this behavior will be implemented later.
* For now, we're just saying that every Animal SHOULD be able to move
*
* void means the method doesn't "return" anything.
* This means that you will not get a value back from calling this method.
* You can still use void methods to change the state ("traits") of an animal,
* like we did in eat()!
*/
public abstract void move();
}