Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

Java Dictionary

  1. Home
  2. Java Dictionary
  3. interface / implements / abstract

interface / implements / abstract

Both interfaces and abstract classes define a "contract" that must be implemented. An interface defines method signatures, and a class uses implements to fulfill that contract. An abstract class defines a partially implemented class that leaves some details to its subclasses.

Syntax

// Define an interface.
interface InterfaceName {
    // Abstract method (no implementation)
    ReturnType methodName(args);

    // default method (Java 8+, has a default implementation)
    default ReturnType methodName(args) {
        // Default logic
    }

    // static method (Java 8+)
    static ReturnType methodName(args) {
        // Logic
    }
}

// Implement an interface (multiple interfaces allowed).
class MyClass implements InterfaceA, InterfaceB {
    @Override
    public ReturnType methodName(args) {
        // Implementation
    }
}

// Define an abstract class.
abstract class AbstractClass {
    // Abstract method (must be implemented by subclasses)
    abstract ReturnType methodName(args);

    // Concrete method (shared logic)
    void commonMethod() {
        // Logic
    }
}

Keyword Reference

KeywordDescription
interfaceDefines method signatures and constants. Cannot be instantiated directly.
implementsDeclares that a class implements one or more interfaces. Multiple interfaces are separated by commas.
abstract (class)A class that cannot be instantiated directly. It may contain abstract methods.
abstract (method)A method with no implementation. Subclasses must override it.
default (interface)Java 8+. Defines a method with a default implementation inside an interface.

Sample Code

// Define the Drawable interface.
interface Drawable {
    void draw(); // Abstract method

    default String getType() { // Default method
        return "Shape";
    }
}

// Partially implement Drawable with an abstract class.
abstract class Shape implements Drawable {
    String color;

    Shape(String color) {
        this.color = color;
    }

    // draw() remains abstract, leaving the implementation to subclasses.
    @Override
    public abstract void draw();
}

// Implement the abstract method in a concrete class.
class Circle extends Shape {
    double radius;

    Circle(String color, double radius) {
        super(color);
        this.radius = radius;
    }

    @Override
    public void draw() {
        System.out.println("Drew a " + color + " circle (radius: " + radius + ").");
    }
}

Drawable d = new Circle("red", 5.0);
d.draw();        // Prints: "Drew a red circle (radius: 5.0)."
System.out.println(d.getType()); // Prints: "Shape"

// Implement multiple interfaces.
interface Resizable {
    void resize(double factor);
}

class Square extends Shape implements Resizable {
    double side;

    Square(String color, double side) { super(color); this.side = side; }

    @Override public void draw() { System.out.println("Drew a " + color + " square."); }
    @Override public void resize(double factor) { side *= factor; }
}

Notes

An interface defines a contract for what a class "can do," and a class can implement multiple interfaces. An abstract class provides shared implementation while delegating specific behavior to its subclasses. A class can only extend one abstract class (single inheritance), but it can implement multiple interfaces at the same time.

Since Java 8, interfaces can define default methods, which blurs the distinction between interfaces and abstract classes. Use an abstract class when you need shared state (fields) and common logic; use an interface when you only need to define a type contract.

For inheritance basics, see extends / super / @Override. For functional interfaces, see Predicate / Function / Consumer / Supplier.

If you find any errors or copyright issues, please .