1. What is Abstraction?

Perhaps, abstraction is the most confusing concept in OOP. Most guys tend to think that abstractions relates to interfaces and abstract classes. But that’s not true. From my experience, a majority of programmers don’t have a fully and proper understanding about this matter.

So today would be the day you truly understand abstraction in general and abstraction in Java.

Abstraction is a general concept that denotes the progress of modeling “real things” into programming language. For example, when you write a class named Dog, you abstract a real dog into a type (class) in Java:

class Dog {
}

When you declare a field named breed in the Dog class, you also abstract the real attribute of the dog in terms of a class’ variable:

class Dog {
	String breed;
}

When you implement a method named bark() in the Dog class, you also abstract the real behavior, barking, of a dog in terms of a method in a class:

class Dog {
	String breed;
	
	void bark() {
		System.out.println("Gow gow!");
	}
}

As you can see, this Dog class abstracts a real dog in the real world in terms of a type (class) with fields (abstract the characteristics) and methods (abstract the behaviors). Abstraction is showing the essential features of an object.

When you declare an interface with empty methods, you also use abstraction:

interface Animal {
	void eat();
	
	void move();
	
	void sleep();
}

When you declare a variable, you also use abstraction:

int numberOfLegs = 4;

From the examples above, everything is an abstraction. The progress of abstraction happens when you declare an interface, write a class, implement a method, declare a variable, etc. Everything is an abstraction.

 

2. Why Is Abstraction Important?

Suppose that abstraction is not there, we cannot identify an object via its class name.

If abstraction is not there, we cannot access the attributes of an object.

If abstraction is not there, we cannot invoke the behaviors of an object.

Having said that, abstraction is the most fundamental concept on which others rely on, such as encapsulation, inheritance and polymorphism.

 

3. The Truth About Abstraction in Java

  • Abstraction is not about interfaces or abstract classes. Abstraction is the progress of modeling real world objects into programming language. Hence interfaces and abstract classes are just two techniques used in this progress.
  • In an Object-Oriented Programming language like Java, everything is an abstraction: interface, class, field, method, variable, etc.
  • Abstraction is the fundamental concept on which other concepts rely on: encapsulation, inheritance and polymorphism.

 

Related Tutorials:

 

Other Recommended Tutorials:


About the Author:

is certified Java programmer (SCJP and SCWCD). He began programming with Java back in the days of Java 1.4 and has been passionate about it ever since. You can connect with him on Facebook and watch his Java videos on YouTube.



Add comment

   


Comments 

#14Rajesh Swarnkar2022-08-20 02:47
now I really understood abstraction. Awesome!
Quote
#13Mangosit2022-01-03 12:00
Exceptional! I understood abstraction after 5 years of confusion. Thanks a lot
Quote
#12ASHISH DEVNANI2020-11-23 22:38
Awesome explanation.
Quote
#11Nam2020-10-25 18:02
Hi Takahashi,
I recommend you to read the articles mentioned in the Related Tutorials at the bottom of this article.
Quote
#10Takahashi2020-10-24 13:03
This is also the explanation I heard from one of my teachers.
I am always looking for documentation on this matter.
can you share with me any other document or source.
Quote