At the core of writing better Java code is a thorough knowledge using interfaces and abstraction. In this course, Java Interfaces and Abstraction, you'll learn how to improve the maintainability and extensibility of Java code over time. First, you'll delve into how to define interfaces and abstract classes. Next, you'll explore what an abstraction is, and how to design good abstractions. Finally, you'll discover what and when to avoid when designing abstractions. When you're finished with this course, you'll have a foundational knowledge of interfaces and abstraction in Java that will help you on your path towards becoming a Java expert. Software required: Java SE 8.