Java – Abstract Classes

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.
ClassAbstract Class
Class allows only Concrete methodsAbstract 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();
            }
}
Scroll to Top