Difference between Abstraction and Encapsulation in Java

Java is an object-oriented programming language and it follows OOPs concepts. The OOPs concepts include classes, objects, polymorphism, inheritance. There are two other features of OOPs i.e. abstraction and encapsulation. They both seem very similar but totally different in concept and implementation. The major difference between abstraction and encapsulation is that abstraction hides the code complexity while encapsulation hides the internal working from the outside world. In this section, we will discuss abstraction and encapsulation and the differences between abstraction and encapsulation in Java.


Abstraction

It is a feature of OOPs. It is used to hide the unnecessary information or data from the user but shows the essential data that is useful for the user. It can be achieved by using the interface and the abstract class. In interfaces, only the methods are exposed to the end-user. The best example of abstraction is a TV remote. The user only interacts with the outer interface that is nothing but keys. The user only knows which key to press for what function.


Let's understand the abstraction through a Java program.

//abstract class 
abstract class Shape   
{  
//abstract method 
//note that we have not implemented the functionality of the method 
public abstract void draw();  
}  
class Circle extends Shape  
{  
//implementing functionality of the abstract method 
public void draw()   
{  
System.out.println("Circle!");  
}  
}  
//main class  
public class Test   
{  
public static void main(String[] args)   
{  
Shape circle = new Circle();  
//invoking abstract method draw() 
circle.draw();  
}  
}  


Encapsulation

It is also a feature of OOP. It is used to bind up the data into a single unit called class. It provides the mechanism which is known as data hiding. It is an important feature of OOPs. It prevents to access data members from the outside of the class. It is also necessary from the security point of view.

Let's understand the abstraction through a Java program.


EncapsulationDemo.java

//A Java class to test the encapsulated class Account   
public class EncapsulationDemo  
{    
public static void main(String[] args)   
{    
//creating instance of Account class   
Account acc=new Account();    
//setting values through setter methods   
acc.setAcc_no(7560504000L