Ticker

6/recent/ticker-posts

Abstraction in Java

Abstraction in Java

Introduction

Abstraction is one of the four fundamental pillars of object-oriented programming (OOP) and plays a crucial role in Java. It allows us to hide the implementation details of an object and only expose the relevant characteristics or behaviors to the outside world. In Java, abstraction is achieved through abstract classes and abstract methods.

Abstract Class

An abstract class is a class that cannot be instantiated directly; it serves as a blueprint for other classes to inherit from. It may contain both abstract and concrete methods. Abstract methods are those that have no implementation in the abstract class and must be overridden by the subclasses.

Code Example: Abstract Class

java
abstract class Shape {
// Concrete method
public void display() {
System.out.println("This is a shape.");
}

// Abstract method (no implementation)
public abstract void draw();
}

class Circle extends Shape {
// Concrete implementation of the abstract method
@Override
public void draw() {
System.out.println("Drawing a circle...");
}
}

class Square extends Shape {
// Concrete implementation of the abstract method
@Override
public void draw() {
System.out.println("Drawing a square...");
}
}

Explanation

In the code example above, we have an abstract class Shape that contains two methods. The display() method is a concrete method with an implementation, while the draw() method is an abstract method without any implementation. The Shape class cannot be instantiated directly using the new keyword, but it can be used as a reference type.

Abstract Method

An abstract method is a method that is declared without providing any implementation in the abstract class. It is meant to be overridden by the concrete subclasses to provide their specific implementation.

Code Example: Abstract Method

java
abstract class Animal {
// Abstract method (no implementation)
public abstract void makeSound();
}

class Dog extends Animal {
// Concrete implementation of the abstract method
@Override
public void makeSound() {
System.out.println("Dog barks: Woof Woof!");
}
}

class Cat extends Animal {
// Concrete implementation of the abstract method
@Override
public void makeSound() {
System.out.println("Cat meows: Meow Meow!");
}
}

Explanation

In the code example above, we have an abstract class Animal with an abstract method makeSound(). The makeSound() method is not implemented in the Animal class but is overridden in the concrete subclasses Dog and Cat to provide their specific sound implementations.

Conclusion

Abstraction is a powerful concept in Java and object-oriented programming. It allows us to create a clear separation between the interface and the implementation, making our code more flexible and maintainable. Abstract classes and abstract methods are key tools in achieving abstraction in Java. By using them, we can define a common interface for a group of related classes while leaving the specific implementation details to the individual subclasses.

Post a Comment

0 Comments