---
title: "What is a concrete class, and how is it different from an abstract class?"  
description: "What is a concrete class, and how is it different from an abstract class?"  
author: "Steilla Mitchel"  
published: 2023-06-21  
updated: 2023-06-25  
canonical: https://www.mindstick.com/forum/158821/what-is-a-concrete-class-and-how-is-it-different-from-an-abstract-class  
category: "oops"  
tags: ["abstract class", "class", "programming language"]  
reading_time: 3 minutes  

---

# What is a concrete class, and how is it different from an abstract class?

What is a [concrete class](https://www.mindstick.com/interview/22981/abstract-class-vs-concrete-class-in-objective-c), and how is it different from an [abstract class](https://www.mindstick.com/articles/1430/abstract-class)?

## Replies

### Reply by Aryan Kumar

Sure. A concrete [class](https://www.mindstick.com/blog/165/generic-class-in-c-sharp) is a class that can be instantiated, meaning that it can be created as an object. Concrete classes have all of their methods implemented, so they can be used to represent specific things in the real world.

An [abstract](https://www.mindstick.com/forum/156718/when-to-use-abstract-classes-in-c-sharp) class is a class that cannot be instantiated. Abstract classes are used to define common behavior or properties that are shared by a set of subclasses. Abstract classes can have both abstract methods and concrete methods. Abstract methods are methods that have no implementation, meaning that they must be implemented by subclasses. Concrete methods are methods that have an implementation, and they can be used by both abstract classes and subclasses.

The main difference between a concrete class and an abstract class is that a concrete class can be instantiated, while an abstract class cannot. Concrete classes are used to represent specific things in the real world, while abstract classes are used to define common behavior or properties that are shared by a set of subclasses.

Here is a table that summarizes the differences between concrete classes and abstract classes:

| Feature | Concrete Class | Abstract Class |
| --- | --- | --- |
| Can be instantiated | Yes | No |
| Has all methods implemented | Yes | No (may have some concrete methods) |
| Used to represent specific things in the real world | Yes | No |
| Used to define common behavior or properties | No | Yes |

Here are some examples of concrete classes:

- **A car:** A car is a concrete class that can be instantiated. It has methods for driving, braking, and turning.
- **A dog:** A dog is a concrete class that can be instantiated. It has methods for barking, wagging its tail, and playing fetch.
- **A book:** A book is a concrete class that can be instantiated. It has methods for opening, closing, and reading.

Here are some examples of abstract classes:

- **Shape:** A shape is an abstract class that cannot be instantiated. It has methods for calculating the area and perimeter of a shape.
- **Animal:** An animal is an abstract class that cannot be instantiated. It has methods for eating, sleeping, and moving.
- **Person:** A person is an abstract class that cannot be instantiated. It has methods for walking, talking, and thinking.


---

Original Source: https://www.mindstick.com/forum/158821/what-is-a-concrete-class-and-how-is-it-different-from-an-abstract-class

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
