I am writing some java code and I want to write methods in my main class Array. This class implements ImplementableClass. The former extends Iterable. The Array class has an type.
ImplementableClass.java:
public interface ImplementableClass<E> extends Iterable<E>{
    public void insertObject(E obj);
    public E removeObj(E obj);
}
Main.java:
public class Array<Integer> implements ImplementableClass<E>{
    public void insertObject(E obj){
    }
    public E removeLastObject(E obj){
    }
    //... main method and others below...
}
I have some questions regarding the code in the two files above.
Reading the java documentation, Iterable is of type E (generic value). From what I understand, interfaces are just "blueprints" of the methods that MUST be used in the class that "implements" them. From a basic point of view, there shall not be any variables in here. With that being said, as you may see I am indeed declaring the methods in my ImplementableClass in Main as well. With that being said, I have a couple of questions:
- When declaring my methods from ImplementableClass class in my Array class, this "overrides" the methods from my ImplementableClass class right? 
- Since "E obj" is the argument in both methods, do they have to be the same whenever I declare my methods in my Array class? What should I pass to the methods? What does "E obj" mean? 
- I want to create an array that can hold objects of type E. This means that whenever I instantiate a new object-> - Array<Integer> theArray = new Array<Integer>I can call the methods I have on my Array class on theArray instance right? (i.e theArray.removeLastObject() ) What should I pass as an argument?
- Why would - Iterable<E>be of use in this case?
 
     
     
    