This is basic OO, I recommend reading a book on the subject to further familiarize yourself with the concepts.
To answer your question, you do not instantiate the interface. You instantiate a class that implements the interface.
In the tutorial you mention, the LatLngInterpolator is never instantiated.
outside of the example code, the Linear, LinearFixed or Spherical classes are instantiated.
Then at some point they are passed to the
static void animateMarkerToHC(final Marker marker, final LatLng finalPosition, final LatLngInterpolator latLngInterpolator)
method which only sees the Interface aspect of it.
a simple example you can run on your local machine:
public class InterfaceExample {
public static void main(String[] argv) {
PrintApple applePrinter = new PrintApple();
PrintPear pearPrinter = new PrintPear();
printObject(applePrinter);
printObject(pearPrinter);
}
public static void printObject(PrintInterface p) {
p.printMe(System.out);
}
public static interface PrintInterface {
public void printMe(PrintStream p);
}
public static class PrintApple implements PrintInterface {
public void printMe(PrintStream p) {
p.println("apple");
}
}
public static class PrintPear implements PrintInterface {
public void printMe(PrintStream p) {
p.println("pear");
}
}
}
observe that as far as the printObject method can detect it gets PrintInterface.
the compiler ensures, bar explicit casting, that the object you put in must implement this interface.
this is very close to the tutorial you are seeing.
I think one thing you got confused over was the fact that inside the interface, other classes were being defined. This is a common practice which you should read up on. (inner classes, static inner classes)