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.
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
keyword is used to create an abstract class in java.abstract
keyword to create an abstract method, an abstract method doesn’t have body.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.
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.
how can we invoke any static method from abstract class?
- Priyanka
please explain me about abstract with easy example because i didn’t it in better way. i request you and please also explain me all those points in better ways
- ANJALI THAKUR
Can u please explain one Real World Use Case for Abstract class and abstract Method b
- Anshul Daksh
By using the static keyword we can access the concrete methods in the abstract class. Can any one tell without using the static how can we access the concrete methods in the abstract class?
- Udaya Bhargavi
Important points are easy to understand about the abstract class thank you for your explanation ;)
- Venkatesh
Respected admin, i would like to point out an improvement in point number 5 of the *Important points* written at the end, i believe the correct statement should be : 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. instead of It’s not necessary TO HAVE abstract class to have abstract method. We can mark a class as abstract even if it doesn’t declare any abstract methods… It’s really ambiguous otherwise . i hope the admin would act promptly.
- Hissaan
what is the main role of abstract class in java?
- aryan
Does abstract class contains Constructor? If yes, then what is the use of it?
- Bhagyashri Chaudhari
you ain’t mentioned what’s the use of it.
- Deepak gupta
The subclass of abstract class in java must implement all the abstract methods unless the subclass is also an abstract class. On a similar note, If Class3 extends abstract Class2 and abstract Class2 extends abstract Class1, then Class3 should implement all the abstract methods of Class1 and Class2. Class 2 need not implement methods of Class1 since Class2 is also abstract.
- Praveen