Abstract Class

What is the use of Abstract Class?
Is this the only reason why abstract class is used, “Abstract class is used wherever instantiation is not required” ?

In reply to kireeti1192:

An abtsract or virtual claas defines prototypes of class methods (pure virtual methods).
The user will be forced to provide implementations of these methods in an extended class.

In reply to kireeti1192:

What is the use of Abstract Class?
Is this the only reason why abstract class is used, “Abstract class is used wherever instantiation is not required” ?

You can think of Abstract class as a template. You cannot use directly template unless you add sufficient details to it, in which case the class becomes a concrete class.

Abstract class can (and is) also be used to create class variable that points to handles.
As the abstract class is at the top of the class hierarchy, it can actually point to objects of any of the derived classes. This makes the code (that uses abstract class variable) less susceptible to changes in the class hierarchy.

Anyway, OOPS is a very big topic. You have to read through materials even to understand what is being explained here.

In reply to kireeti1192:

For example, uvm_object is an abstract class. It would make no sense to construct a uvm_object by itself with extending it first and constructing the extension. By declaring the class abstract, it makes it a requirement.

btw, This terminology comes from other programming languages even though the keyword virtual is used to designate an abstract class.

In reply to chr_sue:

In reply to kireeti1192:
An abtsract or virtual claas defines prototypes of class methods (pure virtual methods).
The user will be forced to provide implementations of these methods in an extended class.

Thanks for your answer.
Can’t we define those prototype methods using concrete class?