http://docs.oracle.com/javase/tutorial/java/javaOO/index.html