Java Interfaces
Interfaces in Java are used to achieve Polymorphism. A Java application consists of interacting objects. An object interacts with other objects by sending messages. The ability of an object to receive messages is implemented by providing methods in the object’s class. An interface declaration starts with list of modifiers, which may be empty. Like a class, an interface can have a public or package-level scope. The keyword public is used to indicate that the interface has a public scope.
The general (incomplete) syntax for declaring an interface is
<modifiers> interface <interface-name> {
Constant-Declaration
Method-Declaration
Nested-Type-Declaration
}
Declaring Interface Members
An interface can have three types of members:
Constant fields
Abstract, static, and default methods
Static types (nested interfaces and classes)
Example:
RaceCar.java
package cars.models; public interface RaceCar { String carCompanyAndModel(); String Chassis(); String Engine(); String Transmission(); String Suspension(); String Brakes(); String BodyWork(); String Wheels(); String Dimensions(); }
Bentley.java
package cars.models; public class Bentley implements RaceCar { @Override public String carCompanyAndModel() { return "Bentle" + " " + "Continental GT Speed Convertible"; } @Override public String Chassis() { return "Box tubular space frame construction with integral safety cage" + "\n" + "Anti-intrusion side structures stressed aluminium alloy panels" + "\n" + "Rack-and-pinion steering"; } @Override public String Engine() { return "4.0-litre twin-turbo V8, repositioned to the rear of the engine bay, Motorsport engine management system"; } @Override public String Transmission() { return "Rear wheel drive, Xtrac six-speed sequential transaxle gearbox," + "racing clutch, steering wheel mounted paddle operated pneumatic gear shift"; } @Override public String Suspension() { // TODO Auto-generated method stub return null; } @Override public String Brakes() { // TODO Auto-generated method stub return null; } @Override public String BodyWork() { // TODO Auto-generated method stub return null; } @Override public String Wheels() { // TODO Auto-generated method stub return null; } @Override public String Dimensions() { // TODO Auto-generated method stub return null; } }
Ferrari.java
package cars.models; public class Ferrari implements RaceCar { @Override public String carCompanyAndModel() { return "Ferrari" + " " + "Ferrari FF"; } @Override public String Chassis() { return "Box tubular space frame construction with integral safety cage" + "\n" + "Anti-intrusion side structures stressed aluminium alloy panels" + "\n" + "Rack-and-pinion steering"; } @Override public String Engine() { return "4.0-litre twin-turbo V8, repositioned to the rear of the engine bay, Motorsport engine management system"; } @Override public String Transmission() { return "Rear wheel drive, Xtrac six-speed sequential transaxle gearbox," + "racing clutch, steering wheel mounted paddle operated pneumatic gear shift"; } @Override public String Suspension() { // TODO Auto-generated method stub return null; } @Override public String Brakes() { // TODO Auto-generated method stub return null; } @Override public String BodyWork() { // TODO Auto-generated method stub return null; } @Override public String Wheels() { // TODO Auto-generated method stub return null; } @Override public String Dimensions() { // TODO Auto-generated method stub return null; } }
Mustang.java
package cars.models; public class Mustang implements RaceCar { @Override public String carCompanyAndModel() { return "Mustang" + " " + "Ford Mustang Shelby GT350"; } @Override public String Chassis() { return "Box tubular space frame construction with integral safety cage" + "\n" + "Anti-intrusion side structures stressed aluminium alloy panels" + "\n" + "Rack-and-pinion steering"; } @Override public String Engine() { return "4.0-litre twin-turbo V8, repositioned to the rear of the engine bay, Motorsport engine management system"; } @Override public String Transmission() { return "Rear wheel drive, Xtrac six-speed sequential transaxle gearbox," + "racing clutch, steering wheel mounted paddle operated pneumatic gear shift"; } @Override public String Suspension() { // TODO Auto-generated method stub return null; } @Override public String Brakes() { // TODO Auto-generated method stub return null; } @Override public String BodyWork() { // TODO Auto-generated method stub return null; } @Override public String Wheels() { // TODO Auto-generated method stub return null; } @Override public String Dimensions() { // TODO Auto-generated method stub return null; } }
RaceCars.java
package cars.models; public class RaceCars { static void getRaceCarsProperties(RaceCar raceCar) { String carModel= raceCar.carCompanyAndModel(); System.out.println(carModel); System.out.println(); String chassis = raceCar.Chassis(); System.out.println(chassis); String engine = raceCar.Engine(); System.out.println(engine); String transmission = raceCar.Transmission(); System.out.println(transmission); System.out.println(); } static void getAllRaceCars( RaceCar[] cars) { for(int i = 0; i < cars.length; i++) getRaceCarsProperties( cars [i] ); } public static void main(String[] args) { RaceCar[] cars = { new Bentley(), new Ferrari(), new Mustang() }; getAllRaceCars(cars); } }