oop interview questions
oop interview questions
Object Oriented Programming (also known as OOPs) is a programming paradigm where the complete
software operates as a bunch of objects talking to each other. An object is a collection of data and
the methods which operate on that data.
2. Why OOPs?
The main advantage of OOP is better manageable code that covers the following:
1. The overall understanding of the software is increased as the distance between the
language spoken by developers and that spoken by users.
2. Object orientation eases maintenance by the use of encapsulation. One can easily
change the underlying representation by keeping the methods the same.
3. What is a Class?
A class is a building block of Object Oriented Programs. It is a user-defined data type that contains
the data members and member functions that operate on the data members. It is like a blueprint or
template of objects having common properties and methods.
4. What is an Object?
An object is an instance of a class. Data members and methods of a class cannot be used directly. We
need to create an object (or instance) of the class to use them. In simple terms, they are the actual
world entities that have a state and behavior.
C++
#include <iostream>
// defining class
class Student {
public:
string name;
};
int main()
// creating object
Student student1;
// assigning member some value
student1.name = "Rahul";
return 0;
Output
student1.name: Rahul
The main feature of the OOPs, also known as 4 pillars or basic principles of OOPs are as follows:
1. Encapsulation
2. Data Abstraction
3. Polymorphism
4. Inheritance
6. What is Encapsulation?
Encapsulation is the binding of data and methods that manipulate them into a single unit such that
the sensitive data is hidden from the users
It is implemented as the processes mentioned below:
1. Data hiding: A language feature to restrict access to members of an object. For
example, private and protected members in C++.
2. Bundling of data and methods together: Data and methods that operate on that data
are bundled together. For example, the data members and member methods that
operate on them are wrapped into a single unit known as a class.
7. What is Abstraction?
Abstraction is similar to data encapsulation and is very important in OOP. It means showing only the
necessary information and hiding the other irrelevant information from the user. Abstraction is
implemented using classes and interfaces.
8. What is Polymorphism?
The word “Polymorphism” means having many forms. It is the property of some code to
behave differently for different contexts. For example, in C++ language, we can define multiple
functions having the same name but different working depending on the context.
Polymorphism can be classified into two types based on the time when the call to the object or
function is resolved. They are as follows:
Runtime Polymorphism
A) Compile-Time Polymorphism
Compile time polymorphism, also known as static polymorphism or early binding is the type of
polymorphism where the binding of the call to its code is done at the compile time. Method
overloading or operator overloading are examples of compile-time polymorphism.
B) Runtime Polymorphism
Also known as dynamic polymorphism or late binding, runtime polymorphism is the type of
polymorphism where the actual implementation of the function is determined during the runtime or
execution. Method overriding is an example of this method.
The idea of inheritance is simple, a class is derived from another class and uses data and
implementation of that other class. The class which is derived is called child or derived or subclass
and the class from which the child class is derived is called parent or base or superclass.
The main purpose of Inheritance is to increase code reusability. It is also used to achieve Runtime
Polymorphism.
Access specifiers are special types of keywords that are used to specify or control the accessibility of
entities like classes, methods, and so on. Private, Public, and Protected are examples of access
specifiers or access modifiers.
The key components of OOPs, encapsulation and data hiding, are largely achieved because of these
access specifiers.
The code is easier to maintain and Proper planning is required because OOPs is a little
update. bit tricky.
The programming paradigm is referred to the technique or approach of writing a program. The
programming paradigms can be classified into the following types:
It is a programming paradigm that works by changing the program state through assignment
statements. The main focus in this paradigm is on how to achieve the goal. The following
programming paradigms come under this category:
Declarative programming focuses on what is to be executed rather than how it should be executed.
In this paradigm, we express the logic of a computation without considering its control flow. The
declarative paradigm can be further classified into:
13. What is the difference between Structured Programming and Object Oriented Programming?
Structured Programming is a technique that is considered a precursor to OOP and usually consists
of well-structured and separated modules. It is a subset of procedural programming. The difference
between OOPs and Structured Programming is as follows:
14. What are some commonly used Object Oriented Programming Languages?
OOPs paradigm is one of the most popular programming paradigms. It is widely used in many
popular programming languages such as:
C++
Java
Python
JavaScript
C#
Ruby
Polymorphism can be classified into two types based on the time when the call to the object or
function is resolved. They are as follows:
2. Runtime Polymorphism
Types of Polymorphism
A) Compile-Time Polymorphism
Compile time polymorphism, also known as static polymorphism or early binding is the type of
polymorphism where the binding of the call to its code is done at the compile time. Method
overloading or operator overloading are examples of compile-time polymorphism.
B) Runtime Polymorphism
Also known as dynamic polymorphism or late binding, runtime polymorphism is the type of
polymorphism where the actual implementation of the function is determined during the runtime or
execution. Method overriding is an example of this method.
Overriding is a form of runtime polymorphism where an entity with the same name but a different
implementation is executed. It is implemented with the help of virtual functions.
Yes, there are more challenges when you have more authority. Although inheritance is a very strong
OOPs feature, it also has significant drawbacks.
The base class and the child class, which are both engaged in inheritance, are also closely
related to one another (called tightly coupled). Therefore, if changes need to be made,
they may need to be made in both classes at the same time.
1. Single Inheritance: Child class derived directly from the base class
3. Multilevel Inheritance: Child class derived from the class which is also derived from
another base class.
4. Hierarchical Inheritance: Multiple child classes derived from a single base class.
Note: Type of inheritance supported is dependent on the language. For example, Java does not
support multiple inheritance.
19. What is an interface?
A unique class type known as an interface contains methods but not their definitions. Inside an
interface, only method declaration is permitted. You cannot make objects using an interface.
Instead, you must put that interface into use and specify the procedures for doing so.
Both abstract classes and interfaces are special types of classes that just include the declaration
of the methods, not their implementation. An abstract class is completely distinct from an
interface, though. Following are some major differences between an abstract class and an
interface.
A class that is abstract can have both abstract and non- An interface can only have abstract
abstract methods. methods.
An abstract class can have final, non-final, static The interface has only static and final
and non-static variables. variables.
An interface supports
Abstract class doesn’t support multiple inheritance
multiple inheritance.
Classes do not use memory. They merely serve as a template from which items are made. Now,
objects actually initialize the class members and methods when they are created, using memory in
the process.
No. If the base class includes non-static methods, an object must be constructed. But no objects
need to be generated if the class includes static methods. In this instance, you can use the class
name to directly call those static methods.
The structure is also a user-defined datatype in C++ similar to the class with the following
differences:
The major difference between a structure and a class is that in a structure, the members
are set to public by default while in a class, members are private by default.
The other difference is that we use struct for declaring structure and class for declaring
a class in C++.
24. What is Constructor?
A constructor is a block of code that initializes the newly created object. A constructor resembles an
instance method but it’s not a method as it doesn’t have a return type. It generally is the method
having the same name as the class but in some languages, it might differ. For example:
In C++ and Java, the constructor is named the same as the class name.
Example:
C++JavaPython
class base {
public:
1. Default Constructor
2. Non-Parameterized Constructor
3. Parameterized Constructor
4. Copy Constructor
1. Default Constructor
The default constructor is a constructor that doesn’t take any arguments. It is a non-parameterized
constructor that is automatically defined by the compiler when no explicit constructor definition is
provided.
2. Non-Parameterized Constructor
Example:
C++JavaPython
class base {
base()
}
}
3. Parameterized Constructor
The constructors that take some arguments are known as parameterized constructors.
Example:
C++JavaPython
class base {
public:
int base;
base(int var)
};
4. Copy Constructor
A copy constructor is a member function that initializes an object using another object of the same
class.
Example:
C++Java
class base
{ int a, b;
a = obj.a;
b = obj.b;
In Python, we do not have built-in copy constructors like Java and C++ but we can make a
workaround using different methods.
A destructor is a method that is automatically called when the object goes out of scope or destroyed.
In C++, the destructor name is also the same as the class name but with the (~) tilde symbol as the
prefix.
Example:
C++Python
class base {
public:
In Java, the garbage collector automatically deletes the useless objects so there is no concept of
destructor in Java. We could have used finalize() method as a workaround for the java destructor
but it is also deprecated since Java 9.
Yes We can overload the constructor in a class in Java. Constructor Overloading is done when we
want constructor with different constructor with different parameter(Number and Type).
No, a destructor cannot be overloaded in a class. There can only be one destructor present in a class.
A virtual function is a function that is used to override a method of the parent class in the derived
class. It is used to provide abstraction in a class.
Example:
C++JavaPython
class base {
}
30. What is pure virtual function?
A pure virtual function, also known as an abstract function is a member function that doesn’t contain
any statements. This function is defined in the derived class if needed.
Example:
C++Java
class base {
In Python, we achieve this using @abstractmethod from the ABC (Abstract Base Class) module.
Bonus Question
In general terms, an abstract class is a class that is intended to be used for inheritance. It cannot be
instantiated. An abstract class can consist of both abstract and non-abstract methods.
In C++, an abstract class is a class that contains at least one pure virtual
Example:
C++Java
class absClass {
public: