---
title: "Features and characteristics of OOP"
subject: "Object Oriented Programming"
chapter: 1
key: "semester_3/object_oriented_programming:oop-features"
source: https://www.bctengineer.com/q/semester_3/object_oriented_programming/oop-features
site: BCT Engineering
---

# Features and characteristics of OOP

Object Oriented Programming · Chapter 1: Introduction to Object Oriented Programming

- Asked in: 2074 Chaitra, 3 marks; 2074 Asoj, 6 marks; 2073 Shrawan, 4 marks; 2072 Chaitra, 5 marks; 2070 Chaitra, 4 marks; 2069 Chaitra, 3 marks; 2068 Baisakh, 5 marks (asked 7 times)
- Video: [Lec-41: OOPS Concepts in C++ Explained Simply | Beginners Guide](https://www.youtube.com/watch?v=zCja0Jd52KU) — Gate Smashers
- Answer checked by Claude Opus 5.5 (high effort) on 2026-10-14
- Page: https://www.bctengineer.com/q/semester_3/object_oriented_programming/oop-features
- Whole chapter: https://www.bctengineer.com/md/semester_3/object_oriented_programming/chapter-1

## Question

Explain the features (characteristics) of object oriented programming.

## Short answer

Object-oriented programming models a program as objects that combine data and behavior. Key features are classes and objects, data abstraction, encapsulation for data hiding, inheritance for code reuse, polymorphism for multiple behaviors, dynamic binding, and message passing.

## Answer

Object oriented programming (OOP) is a programming approach that organises a program as a collection of **objects**, where each object bundles data and the functions that work on that data. The main features are:

1. **Objects and classes** - An object is a real-world entity with state (data) and behaviour (functions), such as a student or a bank account. A class is the blueprint from which objects are created; it is a user-defined data type.
2. **Data abstraction** - Showing only the essential features to the user and hiding the implementation details. A user calls `withdraw()` without knowing how the balance is updated.
3. **Encapsulation** - Wrapping data and functions into a single unit (the class). Data is kept `private` and is reached only through public member functions, which gives data hiding and protects data from accidental change.
4. **Inheritance** - A new (derived) class acquires the properties and behaviour of an existing (base) class. It supports code reuse and a hierarchy of classes, e.g. `Student` derived from `Person`.
5. **Polymorphism** - "One name, many forms". The same function name or operator behaves differently in different situations. It is of two kinds:
   - compile-time: function overloading and operator overloading
   - run-time: virtual functions
6. **Dynamic binding** - The code executed for a function call is decided at run time, not at compile time. It goes with polymorphism and virtual functions.
7. **Message passing** - Objects communicate by sending messages, i.e. calling the member functions of other objects: `object.function(arguments)`.

```text
   Person (base)
      ^
      |  inheritance
   Student (derived)
```

**Example:** In a banking program, `Account` is a class; `ram` and `sita` are its objects. Balance is private (encapsulation), and `Saving` and `Current` accounts inherit from `Account`.

These features make programs more secure, reusable, and easier to maintain.

## Check yourself

The answer's key points as multiple-choice questions, with the correct option and why.

1. What does encapsulation mean in OOP?
   A. Wrapping data and functions into one unit (class) and keeping data private, reached through public functions
   B. Showing only essential features and ignoring all data
   C. Creating a new class from an existing class
   D. Using one function name for many purposes
   Answer: A. Encapsulation binds data and functions in a class, giving data hiding through private members and public access functions. (Key point: Encapsulation)

2. What is the main benefit of inheritance?
   A. It decides the called function at run time
   B. A derived class acquires properties of a base class, giving code reuse and class hierarchy
   C. It hides data from the user
   D. It lets objects send messages
   Answer: B. Inheritance lets a derived class (e.g. Student from Person) reuse the base class, supporting reuse and hierarchy. (Key point: Inheritance)

3. Which pair correctly gives compile-time and run-time polymorphism?
   A. Virtual functions; function overloading
   B. Inheritance; encapsulation
   C. Function/operator overloading; virtual functions
   D. Message passing; abstraction
   Answer: C. Overloading is resolved at compile time, while virtual functions give run-time polymorphism. (Key point: Polymorphism kinds)

4. In dynamic binding, when is the code for a function call decided?
   A. At compile time
   B. At link time only
   C. When the class is declared
   D. At run time
   Answer: D. Dynamic binding decides the executed code at run time, and goes with virtual functions. (Key point: Dynamic binding)

## Related in Object Oriented Programming

- [Compare procedural and object oriented programming](https://www.bctengineer.com/question.md?key=semester_3%2Fobject_oriented_programming%3Aprocedural-vs-oop-compare) — Object Oriented Programming, chapter 1
- [Advantages of OOP over procedural programming](https://www.bctengineer.com/question.md?key=semester_3%2Fobject_oriented_programming%3Aoop-vs-procedural-advantages) — Object Oriented Programming, chapter 1, asked 5×
- [How OOP differs from POP](https://www.bctengineer.com/question.md?key=semester_3%2Fobject_oriented_programming%3Aoop-vs-pop-differ) — Object Oriented Programming, chapter 1
- [Simple program illustrating OOP concept](https://www.bctengineer.com/question.md?key=semester_3%2Fobject_oriented_programming%3Aoop-simple-program) — Object Oriented Programming, chapter 1
- [Prime number program: procedural and OOP](https://www.bctengineer.com/question.md?key=semester_3%2Fobject_oriented_programming%3Aprime-procedural-oop) — Object Oriented Programming, chapter 1
- [Transpose of matrix using OOP](https://www.bctengineer.com/question.md?key=semester_3%2Fobject_oriented_programming%3Amatrix-transpose-oop) — Object Oriented Programming, chapter 1

## Related in other subjects

- [Characteristics and advantages of OOP](https://www.bctengineer.com/question.md?key=semester_5%2Fsoftware_engineering%3Aoop-characteristics) — Software Engineering, chapter 2
- [Object oriented system and core concepts](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Aoo-system-concepts-explained) — Object Oriented Analysis and Design, chapter 1
- [Algorithmic vs object-oriented decomposition](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Aalgorithmic-vs-oo-decomposition) — Object Oriented Analysis and Design, chapter 1
- [Is OOP enough in OOAD](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Aoop-enough-in-ooad) — Object Oriented Analysis and Design, chapter 1
