This book is intended for college students in computer science and related fields, as well as professional software engineers, people training in software engineering, and people preparing for technical interviews.
Before you start this book, you should know Java pretty well; in particular, you should know how to define a new class that extends an existing class or implements an interface. If your Java is rusty, here are two books you might start with:
- Downey and Mayfield, Think Java (O’Reilly Media, 2016), which is intended for people who have never programmed before \t
- Sierra and Bates, Head First Java (O’Reilly Media, 2005), which is appropriate for people who already know another programming language
One vocabulary note: the word “interface” can be confusing. In the context of an application programming interface (API), it refers to a set of classes and methods that provide certain capabilities.
In the context of Java, it also refers to a language feature, similar to a class, that specifies a set of methods. To help avoid confusion, I’ll use “interface” in the normal typeface for the general idea of an interface, and interface in the code typeface for the Java language feature.