Working with Interfaces and Abstract Classes

Tutorial 5 of 5

1. Introduction

Goal

This tutorial aims to introduce you to the powerful concepts of interfaces and abstract classes in Java. These are fundamental to object-oriented programming, allowing you to create more versatile and maintainable code.

Learning Outcomes

By the end of this tutorial, you will:
- Understand what interfaces and abstract classes are
- Know when and how to use interfaces and abstract classes
- Be able to implement interfaces and abstract classes in your Java code

Prerequisites

Before starting this tutorial, you should have a basic understanding of Java programming, including classes, objects, and inheritance.

2. Step-by-Step Guide

Interfaces

An interface in Java is a blueprint of a class. It has static constants and abstract methods only. It can be used to achieve total abstraction and multiple inheritance in Java.

Example:

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

Abstract Classes

An abstract class in Java is a class that cannot be instantiated and is always used as a base class. Abstract classes can have both abstract (method without a body) and non-abstract methods (method with a body).

Example:

public abstract class Bird {
    abstract void fly();

    // Non-abstract method
    public void eat() {
        System.out.println("Bird is eating");
    }
}

3. Code Examples

Implementing an Interface

Here, we implement the Animal interface in a class Dog.

public class Dog implements Animal {
    // Implementing interface methods
    public void eat() {
        System.out.println("Dog is eating");
    }

    public void sound() {
        System.out.println("Dog is barking");
    }
}

When you run this code, if you create an object of the Dog class and call the eat and sound methods, you'll see "Dog is eating" and "Dog is barking" printed to the console.

Extending an Abstract Class

Here, we extend the abstract Bird class with a class Sparrow.

public class Sparrow extends Bird {
    // Implementing abstract method
    public void fly() {
        System.out.println("Sparrow is flying");
    }
}

When you run this code, if you create an object of the Sparrow class and call the fly and eat methods, you'll see "Sparrow is flying" and "Bird is eating" printed to the console.

4. Summary

In this tutorial, we covered interfaces and abstract classes in Java. Interfaces provide a way to achieve abstraction and multiple inheritance, while abstract classes allow you to create methods that must be created within any child classes built from the abstract class. Now, you can use these powerful features in your Java programs!

5. Practice Exercises

  1. Create an interface 'Vehicle' with methods 'speedUp', 'applyBrakes'. Implement this interface in a class 'Car'.

  2. Create an abstract class 'Shape' with an abstract method 'draw'. Extend this class in a class 'Circle'.

Remember, practice is the key to mastering any concept. Happy coding!