23) Abstract Keyword
What is abstract Keyword?
abstract is a non-access modifier in java applicable for classes and methods but not for variables. It is used to achieve abstraction which is one of the pillars of Object Oriented Programming (OOP).
Following are different contexts where abstract can be used in Java.
Abstract classes
Abstract methods
Abstract classes
We know that every java program must start with a concept of class that is without classes concept there is no java program perfect.
In java programming we have two types of classes they are
1. Concrete class
2. Abstract class
Concrete class
A concrete class is one which is containing fully defined methods or implemented method.
Example
Abstract class
A class that is declared with abstract keyword is known as abstract class.
OR, the class which is having partial implementation (i.e. not all methods present in the class have method definition).
In short, an abstract class is one which is containing some defined method and some undefined method.
In java programming undefined methods are known as un-Implemented or abstract method.
Syntax
abstract class className
{
......
}
Example
abstract class Vehicle
{
......
}
Abstract method
An abstract method is one which contains only declaration or prototype but it never contains body or definition. In order to make any undefined method as abstract whose declaration is must be predefined by abstract keyword.
If any class has any abstract method then that class becomes an abstract class.
Example
class Vehicle
{
abstract void Bike();
}
Class Vehicle is become an abstract class because it have abstract Bike() method.
Key Points:
An instance of an abstract class cannot be created; we can have references of abstract class type though.
Output:
Derived fun() called
An abstract class can contain constructors in Java. And a constructor of abstract class is called when an instance of an inherited class is created.
Output:
Base Constructor Called
Derived Constructor Called
We can have an abstract class without any abstract method. This allows us to create classes that cannot be instantiated, but can only be inherited.
// An abstract class without any abstract method
Output:
Base fun() called
Abstract classes can also have final methods (methods that cannot be overridden).
// An abstract class with a final method
Output:
Derived fun() called
Why can’t we create the object of an abstract class?
Because these classes are incomplete, they have abstract methods that have no body so if java allows you to create object of this class then if someone calls the abstract method using that object then what would happen? There would be no actual implementation of the method to invoke. Also because an object is concrete. An abstract class is like a template, so you have to extend it and build on it before you can use it.
Summary :
Last updated