Java Interface

In the chapter of Inheritance, earlier you have learnt about classes and how they can be inherited by other classes. There, you have also learned about various types of inheritance and pointed out a odd thing that Java does not support multiple Inheritance. That is Java classes cannot have more than one super class, i.e. the technique shown below is not permitted by Java.
Example:
class X extends Y extends Z
{
. . . . . .
}
But Java designers could not overlook the value and importance of multiple inheritance. A large number of real-life applications need the concept of multiple inheritance. Java provides an alternative way of using multiple inheritance know as interfaces to support this concept. Although Java class cannot be a sub class of more than one super class, it can implement more than one interface. Hence this enables programmers to create classes that build upon other classes without the problem created by multiple inheritance.

Declaring Interfaces

The interface keyword is used to declare an interface. Here is a simple program to declare an interface
Example:
import java.lang.*;
//multiple import statements can be used here
public interface IntrfaceName
{
//Any number of final, static fields
//Any number of abstract method declarations
}

An interface is similar to class in the following ways

  1. The byte code of an interface appears in a .class file
  2. An Interface is written in a file with .java extension
  3. Interfaces may contain any number of methods
  4. Interfaces can be arranged in packages and the file can be in a directory structure that matches the name of the package

Usage of Interface in Java

  • For achieving full data abstraction
  • Using Interface, you can use the concept of multiple inheritance
  • Interfaces can also be used to achieve loose coupling

Properties of Interfaces in Java

  1. Interfaces are implicitly abstract
  2. Each and every method within an interface is also implicitly abstract
  3. For the above reason, they do not need to be declared abstract
  4. All methods of an interface are implicitly public

Defining Interface

Interface is defined much like a class. The general form of defining an interface is:
Example:
access interface_name{
return-type method1(parameter list);
return-type method2(parameter list);
type final-varName1=value;
//         . . . . . . . .
}
When no access specifier is included, then the default access result along with the interface is only available to other members of the package in which it is declared. When it is declared as public, the interface can be used with any other code. It is to be noted that the methods declared have no bodies. They end with a semi colon after the parameter list. They are essentially abstract methods and there can be no default implementation of any method specified within an interface. Variables can be declared inside the interface declarations.

Implementing Interfaces

Once an Interface has been defined, one or more classes can implement that interface. For implementing interface, programmers need to use the clause ‘implements’ in the class definition and then create the method defined by the interface.
If a class implements more than one interface, the interfaces are separated with a comma. In case, a class is used to implement two interfaces that declares the same method, then the same method will be used by clients of either interface.

Here is a Java Program for Interface

Example:
import java.util.*;
 import java.lang.*;
  import java.io.*;
   interface shapeX
 {
 public   String base="shape1";
 public void Draw();
 }
  interface shapeY extends shapeX
 {
public   String base="shape2";
  public void Draw2();
 }
 class shapeG implements shapeY
 {
  public   String base="shape3";
  public void Draw() {
  System.out.println("Drawing Circle here:"+base);
 }
  @Override
public void Draw2() {
   System.out.println("Drawing Circle here:"+base);
  }
 }
  public class Main {
    public static void main(String[] args) {
    shapeG circleshape=new shapeG();
    circleshape.Draw();
   circleshape.Draw();
  }
}

No comments:

Post a Comment