Abstraction:
- Abstraction is a concept of hiding implementations and shows required functionality.
- Abstraction describes “What an object can do instead how it does it?”

Abstract Class:
- Define a class with abstract keyword.
- Abstract class consists concrete methods and abstract methods.
- Concrete Method: A Method with body.
- Abstract Method: A Method without body.
Class | Abstract Class |
Class allows only Concrete methods | Abstract Class contains Concrete and Abstract methods |
class A { void m1(){ logic; } void m2(){ logic; } } | abstract class A { void m1(){ logic; } abstract void m2(); } |
Note: We cannot instantiate (create object) to abstract class because it has undefined methods.
abstract class Demo { void m1(){ // logic } abstract void m2(); } class Main { public static void main(String[] args){ Demo obj = new Demo(); // Error: } } |
Extending Abstract class:
- Every abstract class need extension(child).
- Child override the abstract methods of Abstract class.
- Through Child object, we can access the functionality of Parent (Abstract).
abstract class Parent { void m1() { System.out.println(“Parent class concrete m1()”); } abstract void m2(); } class Child extends Parent { void m2() // override { System.out.println(“Overridden m2() method of Abstract class”); } } class Main { public static void main(String args[]) { Child obj = new Child(); obj.m1(); obj.m2(); } } |
Initializing abstract class instance variables:
- Abstract class can have instance variables.
- Using super(), we initialize Abstract class instance variables in Child object creation process.
import java.util.Scanner ; abstract class Parent { String pname; Parent(String pname) { this.pname = pname ; } abstract void details(); } class Child extends Parent { String cname ; Child(String pname, String cname) { super(pname); this.cname = cname ; } void details() { System.out.println(“Parent Name is: “+super.pname); System.out.println(“Child Name is : “+this.cname); } } class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print(“Enter Parent Name : “); String pname = scan.next(); System.out.print(“Enter Child Name : “); String cname = scan.next(); Child obj = new Child(pname, cname); obj.details(); } } |