0% found this document useful (0 votes)
2 views

JavaInterfaces

Java interfaces are collections of abstract methods used to achieve abstraction, allowing method definitions without implementations. They can contain constants, default methods, static methods, and nested types, and are similar to classes but cannot be instantiated or contain constructors. Interfaces can extend multiple interfaces, and with Java 8, default methods can be added, allowing for method implementations within interfaces without affecting implementing classes.

Uploaded by

Vivek Tiwari
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

JavaInterfaces

Java interfaces are collections of abstract methods used to achieve abstraction, allowing method definitions without implementations. They can contain constants, default methods, static methods, and nested types, and are similar to classes but cannot be instantiated or contain constructors. Interfaces can extend multiple interfaces, and with Java 8, default methods can be added, allowing for method implementations within interfaces without affecting implementing classes.

Uploaded by

Vivek Tiwari
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

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.

Declaring an Interface in Java

1
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 : NameOfInterface.java */


import java.lang.*;
// 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 : Animal.java */


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.

2
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 : MammalInt.java */
public class MammalInt implements Animal {

public void eat() {


System.out.println("Mammal eats");
}

public void travel() {


System.out.println("Mammal travels");
}

public int noOfLegs() {


return 0;
}

public static void main(String args[]) {


MammalInt m = new MammalInt();
m.eat();
m.travel();
}
}
interface Animal {
public void eat();
public void travel();
}

Output

Mammal eats
Mammal travels

Rules for defining overriding methods in Java Interfaces

3
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: Sports.java
public interface Sports {
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
}

// Filename: Football.java
public interface Football extends Sports {
public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
}

4
// Filename: Hockey.java
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) {


System.out.println("Home team: " + name);
}

5
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();
hockeyDemo.setHomeTeam("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);
}

6
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) {


System.out.println("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();
hockeyDemo.setHomeTeam("India");
hockeyDemo.organize();
}

7
public void organize() {
System.out.println("Match organized. ");
}
}

Output

Home team: India


Match organized.

default methods in Java Interfaces


With the release of Java 8, we can now add methods with implementation inside
an interface. These methods are called default methods.

To declare default methods inside interfaces, we use the default keyword. For
example,

public default void getSides() {


// body of getSides()
}

Why default methods?


Let's take a scenario to understand why default methods are introduced in Java.

Suppose, we need to add a new method in an interface.

We can add the method in our interface easily without implementation. However,
that's not the end of the story. All our classes that implement that interface must
provide an implementation for the method.

If a large number of classes were implementing this interface, we need to track all
these classes and make changes to them. This is not only tedious but error-prone
as well.

To resolve this, Java introduced default methods. Default methods are inherited
like ordinary methods.
8
Let's take an example to have a better understanding of default methods.

Example: Default Method in Java Interface


interface Polygon {
void getArea();

// default method
default void getSides() {
System.out.println("I can get sides of a polygon.");
}
}

// implements the interface


class Rectangle implements Polygon {
public void getArea() {
int length = 6;
int breadth = 5;
int area = length * breadth;
System.out.println("The area of the rectangle is " + area);
}

// overrides the getSides()


public void getSides() {
System.out.println("I have 4 sides.");
}
}

// implements the interface


class Square implements Polygon {
public void getArea() {
int length = 5;
int area = length * length;
System.out.println("The area of the square is " + area);
}
}

class Main {
public static void main(String[] args) {

9
// create an object of Rectangle
Rectangle r1 = new Rectangle();
r1.getArea();
r1.getSides();

// create an object of Square


Square s1 = new Square();
s1.getArea();
s1.getSides();
}
}
Run Code

Output

The area of the rectangle is 30


I have 4 sides.
The area of the square is 25
I can get sides of a polygon.

In the above example, we have created an interface named Polygon . It has a


default method getSides() and an abstract method getArea() .

Here, we have created two classes, Rectangle and Square , that implement Polygon .

The Rectangle class provides the implementation of the getArea() method and
overrides the getSides() method. However, the Square class only provides the
implementation of the getArea() method.
Now, while calling the getSides() method using the Rectangle object, the
overridden method is called. However, in the case of the Square object, the default
method is called.

10

You might also like