110 likes | 189 Views
Chapter 9. Interfaces. Creating Interfaces. An interface is a contract. Every class that implements the interface must provide the interface’s defined methods. Each class implements the methods however it sees fit. A class can implement multiple interfaces. Declaring the Interface.
E N D
Chapter 9 Interfaces
Creating Interfaces • An interface is a contract. • Every class that implements the interface must provide the interface’s defined methods. • Each class implements the methods however it sees fit. • A class can implement multiple interfaces.
Declaring the Interface • Similar to a class declaration but uses the interface keyword • The extends keyword can be used to extend interfaces.
Interface Restrictions • Interfaces: • Cannot have member fields • Can define constants • Cannot have methods with implementation; all methods in an interface are implicitly abstract • Cannot be instantiated • Cannot define constructors
Implementing Multiple Interfaces: The Debuggable Interface • Debugging is an important step in the programming cycle. • One way to debug a program is to display information about objects and variables to ensure their validity.
Debugging an Interface • In the ball program, seeing information about each of the objects as the program runs is helpful. • Ball and Wall classes do not derive from the same base class (Java does not support multiple inheritance). • Ball and Wall can implement common interfaces.
The Debuggable Interface • The Debuggable interface defines two public methods: • displayStatus(String identifier); • displayError(String error); • The interface does not define how to implement these methods. • Implementation details are left to the classes.
Interfaces vs. Abstract Classes • Use an abstract base class if: • You are trying to create an is a relationship: • A tree is a plant • A fly is an insect • You do not want to instantiate the base class.
Interfaces vs. Abstract Classes • Use an interface if: • You are not trying to create an is a relationship. • You are stating that your class has these capabilities. • A Ball and a Wallhave the capability of being colorable and debuggable. • You need a way to handle multiple inheritance.
Extending Interfaces • Interfaces can be extended just like classes. • Allows the programmer to provide new functionality without rewriting existing code • Use the keyword extends: interface DebugLogging extends Debuggable
Polymorphic Interfaces • Interfaces can be treated polymorphically, as a type. • A method that accepts an object which implements the Debuggable interface will also accept any object which implements any interface derived from the Debuggable interface.