It would be a lot better if the class Fish had a way for us to set these variables when we created the new instance. This capability exists with the constructor. It is called immediately when a new instance of a class is created. As you can see above, we have made a constructor. A constructor is unique among other methods because it has the exact same name as the class and it has no return type - not even void.
Constructors can have input requirements too.
In fact, our Fish class is a great candidate for input requirements. Now the user is required to supply the length and species when a new Fish is created. Okay, that's great. Now, what if we want our constructor to do a lot of work, say, initialize a network connection. However, we don't want to reproduce that code in every edition of our overloaded constructor.