I'm having issues with understanding how abstract constructors work. I am aware that an abstract super class is there to be like the back bone and all the sub classes have to have the methods placed in it but I don't understand the constructor side. 

```
 public abstract class Animal{
           public String name;
           public int year_discovered; 
           public String population; 

 public Animal(String name, int year_discovered, String population){
           this.name = name;
           this.year_discovered = year_discovered;
           this.population = population; }
           }

```

Above is my super abstract class. Below is my subclass.

```
 public class Monkey extends Animal{
           public String type;
           public String color;

 public Monkey(String type, String color){
           super(name,year_discovered,population)
           this.type = type;
           this.color = color;}
               }

```

I get a error message that say's i'm trying to reference the supertype constructor before it is called. 

Now the reason I am doing this is so I don't have to duplicate code for each different species. The code is just a quick example I made to try and help me put across my confusion. Thank you for any future replies.