Tutorial

Abstract Class in Java

Published on August 3, 2022
author

Pankaj

Abstract Class in Java

Abstract class in Java is similar to interface except that it can contain default method implementation. An abstract class can have an abstract method without body and it can have methods with implementation also. abstract keyword is used to create a abstract class and method. Abstract class in java can’t be instantiated. An abstract class is mostly used to provide a base for subclasses to extend and implement the abstract methods and override or use the implemented methods in abstract class.

Abstract Class in Java

abstract class in java, java abstract class example Here is a simple example of an Abstract Class in Java.

package com.journaldev.design;

//abstract class
public abstract class Person {
	
	private String name;
	private String gender;
	
	public Person(String nm, String gen){
		this.name=nm;
		this.gender=gen;
	}
	
	//abstract method
	public abstract void work();
	
	@Override
	public String toString(){
		return "Name="+this.name+"::Gender="+this.gender;
	}

	public void changeName(String newName) {
		this.name = newName;
	}	
}

Notice that work() is an abstract method and it has no-body. Here is a concrete class example extending an abstract class in java.

package com.journaldev.design;

public class Employee extends Person {
	
	private int empId;
	
	public Employee(String nm, String gen, int id) {
		super(nm, gen);
		this.empId=id;
	}

	@Override
	public void work() {
		if(empId == 0){
			System.out.println("Not working");
		}else{
			System.out.println("Working as employee!!");
		}
	}
	
	public static void main(String args[]){
		//coding in terms of abstract classes
		Person student = new Employee("Dove","Female",0);
		Person employee = new Employee("Pankaj","Male",123);
		student.work();
		employee.work();
		//using method implemented in abstract class - inheritance
		employee.changeName("Pankaj Kumar");
		System.out.println(employee.toString());
	}

}

Note that subclass Employee inherits the properties and methods of superclass Person using inheritance in java. Also notice the use of Override annotation in Employee class. Read more for why we should always use Override annotation when overriding a method.

Abstract class in Java Important Points

  1. abstract keyword is used to create an abstract class in java.
  2. Abstract class in java can’t be instantiated.
  3. We can use abstract keyword to create an abstract method, an abstract method doesn’t have body.
  4. If a class have abstract methods, then the class should also be abstract using abstract keyword, else it will not compile.
  5. It’s not necessary for an abstract class to have abstract method. We can mark a class as abstract even if it doesn’t declare any abstract methods.
  6. If abstract class doesn’t have any method implementation, its better to use interface because java doesn’t support multiple class inheritance.
  7. The subclass of abstract class in java must implement all the abstract methods unless the subclass is also an abstract class.
  8. All the methods in an interface are implicitly abstract unless the interface methods are static or default. Static methods and default methods in interfaces are added in Java 8, for more details read Java 8 interface changes.
  9. Java Abstract class can implement interfaces without even providing the implementation of interface methods.
  10. Java Abstract class is used to provide common method implementation to all the subclasses or to provide default implementation.
  11. We can run abstract class in java like any other class if it has main() method.

That’s all for an abstract class in Java. If I missed anything important, please let us know through comments.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar
Pankaj

author

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
JournalDev
DigitalOcean Employee
DigitalOcean Employee badge
July 14, 2013

Nice tutorial, I think you have covered everything about abstract classes and methods. Please provide some difference between abstract class and interface.

- Amit

    JournalDev
    DigitalOcean Employee
    DigitalOcean Employee badge
    May 13, 2014

    There are two classes person and Employee. You have created the object of person class. Is it ok? and where is ‘changeName’ method?

    - Kapil

      JournalDev
      DigitalOcean Employee
      DigitalOcean Employee badge
      June 8, 2014

      This is is not showing parameter value . i have use Person student= new Employee(“Deepak”,“Male”,20);

      - deepak

        JournalDev
        DigitalOcean Employee
        DigitalOcean Employee badge
        October 7, 2014

        1. abstract class can’t be instantiated 2. abstract class can contain definition of function with respect to these features, my question is— can we call those function which are defined in abstract class by reference of that class? if yes then why and how?

        - Firoj Mujawar

          JournalDev
          DigitalOcean Employee
          DigitalOcean Employee badge
          March 10, 2015

          can we override a non abstract method of abstract class . If yes then what is the use of making a method abstract in abstract class.

          - vishnu

            JournalDev
            DigitalOcean Employee
            DigitalOcean Employee badge
            April 4, 2015

            Abstract class can contain Constructor, if we cannot create an instance what is the use of this constructor.

            - Raghuveer Kurdi

              JournalDev
              DigitalOcean Employee
              DigitalOcean Employee badge
              June 29, 2015

              Abstract class can’t be instantiated. It is wrong what about anonymous class.

              - manish

                JournalDev
                DigitalOcean Employee
                DigitalOcean Employee badge
                November 23, 2015

                Hi Pankaj, Can u please tell me where we can use interfaces and abstract classes in realtime,could you please give me in realtime example.

                - Rajesh

                  JournalDev
                  DigitalOcean Employee
                  DigitalOcean Employee badge
                  January 7, 2016

                  can i have more day to day life examoles on abstract class…

                  - shaurya gaurav mehta

                    JournalDev
                    DigitalOcean Employee
                    DigitalOcean Employee badge
                    January 25, 2016

                    i need to submit this morning. i have working out my self but i am unable to define it. define an interface that consists of methods that can operate on classes employee and student

                    - odelami emmanuel

                      Try DigitalOcean for free

                      Click below to sign up and get $200 of credit to try our products over 60 days!

                      Sign up

                      Join the Tech Talk
                      Success! Thank you! Please check your email for further details.

                      Please complete your information!

                      Become a contributor for community

                      Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

                      DigitalOcean Documentation

                      Full documentation for every DigitalOcean product.

                      Resources for startups and SMBs

                      The Wave has everything you need to know about building a business, from raising funding to marketing your product.

                      Get our newsletter

                      Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

                      New accounts only. By submitting your email you agree to our Privacy Policy

                      The developer cloud

                      Scale up as you grow — whether you're running one virtual machine or ten thousand.

                      Get started for free

                      Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

                      *This promotional offer applies to new accounts only.