0% found this document useful (0 votes)
7 views8 pages

Understanding Java Interfaces Explained

Uploaded by

zunairam841
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views8 pages

Understanding Java Interfaces Explained

Uploaded by

zunairam841
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Java - Interfaces

Java Interfaces
Java interface is a collection of abstract methods. The interface is used to achieve abstraction in which
you can define methods without their implementations (without having the body of the methods). An
interface is a reference type and is similar to the class.

Along with abstract methods, an interface may also contain constants, default methods, static
methods, and nested types. Method bodies exist only for default methods and static methods.

Writing an interface is similar to writing a class. However, a class describes the attributes and behaviors
of an object. An interface contains behaviors that a class implements. Unless the class that implements
the interface is abstract, all the methods of the interface need to be defined in the class.

Java Interfaces and Classes: Similarities and Differences

Similarities

An interface is similar to a class in the following ways −

An interface can contain any number of methods.

An interface is written in a file with a .java extension, with the name of the interface matching
the name of the file.

The byte code of an interface appears in a .class file.


Interfaces appear in packages, and their corresponding bytecode file must be in a directory
structure that matches the package name.

Differences

However, an interface is different from a class in several ways, including −

You cannot instantiate an interface.


An interface does not contain any constructors.
All of the methods in an interface are abstract.

An interface cannot contain instance fields. The only fields that can appear in an interface must
be declared both static and final.

An interface is not extended by a class; it is implemented by a class.


An interface can extend multiple interfaces.

Learn Java in-depth with real-world projects through our Java certification course. Enroll and become a
certified expert to boost your career.

Declaring an Interface in Java


The interface keyword is used to declare an interface. Here is a simple example to declare an interface

Example to Declare a Java Interface

Following is an example of an interface −

/* File name : [Link] */


import [Link].*;
// Any number of import statements

public interface NameOfInterface {


// Any number of final, static fields
// Any number of abstract method declarations\
}

Propeties of Java Interface


Interfaces have the following properties −

An interface is implicitly abstract. You do not need to use the abstract keyword while declaring
an interface.

Each method in an interface is also implicitly abstract, so the abstract keyword is not needed.
Methods in an interface are implicitly public.

Example

/* File name : [Link] */


interface Animal {
public void eat();
public void travel();
}

Implementing Interfaces in Java


When a class implements an interface, you can think of the class as signing a contract, agreeing to
perform the specific behaviors of the interface. If a class does not perform all the behaviors of the
interface, the class must declare itself as abstract.

A class uses the implements keyword to implement an interface. The implements keyword appears in
the class declaration following the extends portion of the declaration.

Example: Implement an Interface in Java

Open Compiler

/* File name : [Link] */


public class MammalInt implements Animal {

public void eat() {


[Link]("Mammal eats");
}

public void travel() {


[Link]("Mammal travels");
}

public int noOfLegs() {


return 0;
}

public static void main(String args[]) {


MammalInt m = new MammalInt();
[Link]();
[Link]();
}
}
interface Animal {
public void eat();
public void travel();
}
Output

Mammal eats
Mammal travels

Rules for defining overriding methods in Java Interfaces

When overriding methods defined in interfaces, there are several rules to be followed −

Checked exceptions should not be declared on implementation methods other than the ones
declared by the interface method or subclasses of those declared by the interface method.

The signature of the interface method and the same return type or subtype should be
maintained when overriding the methods.

An implementation class itself can be abstract and if so, interface methods need not be
implemented.

Rules for implementing Java Interfaces

When implementation interfaces, there are several rules −

A class can implement more than one interface at a time.

A class can extend only one class, but implement many interfaces.
An interface can extend another interface, in a similar way as a class can extend another class.

Extending Java Interfaces


An interface can extend another interface in the same way that a class can extend another class. The
extends keyword is used to extend an interface, and the child interface inherits the methods of the
parent interface.

Example: How to Extend Java Interface

The following Sports interface is extended by Hockey and Football interfaces.

// Filename: [Link]
public interface Sports {
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
}
// Filename: [Link]
public interface Football extends Sports {
public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
}

// Filename: [Link]
public interface Hockey extends Sports {
public void homeGoalScored();
public void visitingGoalScored();
public void endOfPeriod(int period);
public void overtimePeriod(int ot);
}

The Hockey interface has four methods, but it inherits two from Sports; thus, a class that implements
Hockey needs to implement all six methods. Similarly, a class that implements Football needs to define
the three methods from Football and the two methods from Sports.

Example

Open Compiler

interface Sports {
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
}

interface Football extends Sports {


public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
}

interface Hockey extends Sports {


public void homeGoalScored();
public void visitingGoalScored();
public void endOfPeriod(int period);
public void overtimePeriod(int ot);
}

public class HockeyDemo implements Hockey {


public void setHomeTeam(String name) {
[Link]("Home team: " + name);
}

public void setVisitingTeam(String name) {}

public void homeGoalScored() {}

public void visitingGoalScored() {}

public void endOfPeriod(int period) {}

public void overtimePeriod(int ot) {}

public static void main(String[] args) {


Hockey hockeyDemo = new HockeyDemo();
[Link]("India");
}
}

Output

Home team: India

Extending Multiple Java Interfaces


A Java class can only extend one parent class. Multiple inheritance is not allowed. Interfaces are not
classes, however, and an interface can extend more than one parent interface.

The extends keyword is used once, and the parent interfaces are declared in a comma-separated list.

For example, if the Hockey interface extended both Sports and Event, it would be declared as −

public interface Hockey extends Sports, Event

Example: How to Extend Multiple Java Interface

Open Compiler
interface Sports {
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
}

interface Football extends Sports {


public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
}

interface Hockey extends Sports {


public void homeGoalScored();
public void visitingGoalScored();
public void endOfPeriod(int period);
public void overtimePeriod(int ot);
}

interface Event {
public void organize();
}
public class HockeyDemo implements Hockey, Event {

public void setHomeTeam(String name) {


[Link]("Home team: " + name);
}

public void setVisitingTeam(String name) {}

public void homeGoalScored() {}

public void visitingGoalScored() {}

public void endOfPeriod(int period) {}

public void overtimePeriod(int ot) {}

public static void main(String[] args) {


HockeyDemo hockeyDemo = new HockeyDemo();
[Link]("India");
[Link]();
}
public void organize() {
[Link]("Match organized. ");
}
}

Output

Home team: India


Match organized.

Tagging Java Interfaces


The most common use of extending interfaces occurs when the parent interface does not contain any
methods. For example, the MouseListener interface in the [Link] package extended
[Link], which is defined as −

Example

package [Link];
public interface EventListener
{}

An interface with no methods in it is referred to as a tagging interface. There are two basic design
purposes of tagging interfaces −

Creates a common parent − As with the EventListener interface, which is extended by dozens of other
interfaces in the Java API, you can use a tagging interface to create a common parent among a group
of interfaces. For example, when an interface extends EventListener, the JVM knows that this particular
interface is going to be used in an event delegation scenario.

Adds a data type to a class − This situation is where the term, tagging comes from. A class that
implements a tagging interface does not need to define any methods (since the interface does not have
any), but the class becomes an interface type through polymorphism.

Common questions

Powered by AI

An interface can extend one or more interfaces, inheriting all their abstract methods, which means implementing classes must implement all these methods. This differs from class extension in Java, where a class can only extend one superclass due to Java’s single inheritance model .

Java interfaces promote modularity through contract-based design, encapsulating method signatures without implementations. They enable classes to implement multiple interfaces, fostering code reuse and decoupling. For example, the Sports interface allows different sports to define their own scoring methods while adhering to common team management methods .

Interfaces cannot have instance fields because they are designed to define behaviors, not state. Instead, interfaces can declare constants, which are public static final by default, providing a way to store constant values across implementations .

Multiple interface inheritance allows a class to implement several interfaces, thereby inheriting abstract methods from multiple sources and providing specificity and flexibility in design. This overcomes the limitation of single inheritance in class hierarchies, where a class can only inherit from one superclass, restricting reuse and flexibility .

When implementing an interface, a class must provide concrete implementations for all its methods unless declared abstract. The overriding methods must maintain the same method signature and return type or subtype. Checked exceptions should only be declared if present in the interface or its subclasses .

When a class implements multiple interfaces, it is required to provide implementations for all the abstract methods declared in those interfaces. This allows for more flexible and modular code, enabling a class to inherit behaviors from multiple sources, unlike class inheritance, which allows a class to extend only one parent class, reflecting Java’s single inheritance model .

The introduction of default methods enables interfaces to evolve by adding new methods without breaking existing implementations. This allows new functionality to be added to interfaces without requiring modifications to implementing classes, thus maintaining backward compatibility and reducing the burden on developers .

Default methods in Java interfaces have method bodies, unlike abstract methods which do not have implementations. This allows interfaces to provide default behaviors, helping to avoid breaking existing implementing classes when new methods are added to interfaces .

A tagging interface is an interface with no methods or fields. It serves two primary purposes: creating a common parent for various interfaces, such as EventListener in the Java API, and adding metadata to a class for polymorphism, allowing instances to be treated as instances of the interface type .

The 'implements' keyword signifies that a class agrees to adhere to the contract defined by the interface, ensuring it provides concrete implementations for all specified behaviors. This contract-based approach encourages consistency and enables polymorphic behavior, where different classes can be treated interchangeably based on the interface they implement .

You might also like