abtract

Java Abstraction

Java Abstraction

Abstraction is the concept of hiding the implementation details and showing only the necessary functionality to the user. In Java, abstraction can be achieved using abstract classes and interfaces.

Abstract Classes

abstract class Animal {
    abstract void sound();  // Abstract method

    void sleep() {  // Regular method
        System.out.println("This animal is sleeping.");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Dog barks");
    }
}

public class AbstractionExample {
    public static void main(String[] args) {
        Animal myDog = new Dog();  // Creating an object of the subclass
        myDog.sound();
        myDog.sleep();
    }
}
    

An abstract class can have both abstract (without implementation) and non-abstract (with implementation) methods. In this example, the sound() method is abstract and must be implemented by the subclass.

Interfaces

interface Animal {
    void sound();
}

class Dog implements Animal {
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

public class AbstractionExample {
    public static void main(String[] args) {
        Animal myDog = new Dog();  // Creating an object of the implementing class
        myDog.sound();
    }
}
    

Interfaces allow you to define methods that must be implemented by any class that implements the interface. The Dog class implements the Animal interface and provides its own implementation of the sound() method.