0% found this document useful (0 votes)
8 views48 pages

Access Specifiers and Inheritance in C++

The document explains the differences between private and public access specifiers in Object-Oriented Programming, highlighting that public members are accessible from anywhere while private members are restricted to the class itself. It also covers concepts such as encapsulation, constructors, destructors, inheritance, polymorphism, and abstraction in C++, detailing how these principles contribute to code organization and reusability. Additionally, it describes various types of inheritance and polymorphism, emphasizing their significance in creating flexible and maintainable code.

Uploaded by

kalsoomummi99
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views48 pages

Access Specifiers and Inheritance in C++

The document explains the differences between private and public access specifiers in Object-Oriented Programming, highlighting that public members are accessible from anywhere while private members are restricted to the class itself. It also covers concepts such as encapsulation, constructors, destructors, inheritance, polymorphism, and abstraction in C++, detailing how these principles contribute to code organization and reusability. Additionally, it describes various types of inheritance and polymorphism, emphasizing their significance in creating flexible and maintainable code.

Uploaded by

kalsoomummi99
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

differentiate

between private
and public access
specifiers;
 In Object-Oriented Programming (OOP), an access specifier (or
access modifier) are keyword that defines accessibility of class
members (attributes and methods). It determines how these
members can be accessed from within or outside the class.
 Public Access Specifier
 Members declared as public are accessible from anywhere, both
inside and outside the class.
 Can be accessed by other classes, objects, and functions.
 Used when you want to expose certain methods or attributes to
the outside world, allowing them to be freely accessed and
modified.
 Private Access Specifier
 Members declared as private are accessible only within the class
where they are defined. They cannot be accessed directly from
outside the class.
 Cannot be accessed by other classes, objects, or functions.
 Used hide the internal implementation details of a class, ensuring
that they cannot be modified or accessed directly from outside
the class.
 In C++, the compiler processes code from top to bottom.

 If the main function uses a class, the class must be defined


before the main function. Otherwise, the compiler won’t
recognize the class and will throw an error.
 In C++, by default, the access specifier for data members and
member functions in a class is private,
 Encapsulation is one of the fundamental principles of Object-
Oriented Programming (OOP). It refers to the bundling or
wrapping of data (attributes) and methods (functions) that
operate on the data into a single unit, called a class.
 Encapsulation also involves restricting direct access to some of
an object's components, which is achieved using access
specifiers like private, public, and protected.
 Encapsulation combines data (attributes) and methods
(functions) into a single unit (class).
 Encapsulation allows you to hide the internal details of how an
object works.
 By making data members private, you prevent external code
from directly accessing or modifying them.
 Encapsulation provides controlled access to data through public
methods.
 Encapsulation is Achieved in C++ through Use of Access
Specifiers:

 private: Members are accessible only within the class.

 public: Members are accessible from outside the class.

 protected: Members are accessible within the class and its


derived classes.
 Constructors and destructors are special member functions in C+
+ that are automatically called when an object is created and
destroyed.
 A constructor is a special member function that is automatically
called when an object of a class is created.

 It is used to initialize the object (e.g., set initial values for


member variables, allocate resources, etc.).

 The constructor has the same name as the class and no return
type (not even void).

 Constructors can be overloaded (i.e., multiple constructors with


different parameter lists can exist).
class ClassName {
public:
// Constructor
ClassName() {
// Initialization code
}
};
 Destructor
 A destructor is a special member function that is automatically
called when an object goes out of scope or is explicitly deleted.

 It is used to release resources (e.g., deallocate memory)that were


acquired by the object during its lifetime.

 The destructor has the same name as the class but is prefixed with
a tilde (~). It also has no return type and no parameters.

 A class can have only one destructor, and it cannot be overloaded.


class ClassName {
public:
// Destructor
~ClassName() {
// Cleanup code
}
};
Constructor Destructor
Used to clean up resources when an object is
Used to initialize an object when it is created.
destroyed.
Allocates memory and sets up the initial state of
Deallocates memory and releases resources (e.g.,
the object.
freeing memory).

MyClass() { // Constructor ~MyClass() { // Destructor


Called automatically when an object goes out of
Called automatically when an object is created.
scope .
Can have multiple types:(default constructor and
Only one type:
parameterized constructor)
Default constructor (no parameters). - No parameters or overloading is allowed.
Can be overloaded (multiple constructors with Cannot be overloaded (only one destructor per
different parameters). class).
Used to: Used to:
- Initialize data members. - Release resources (e.g., memory).
- Allocate memory or resources. - Perform cleanup operations.
- Set default values for the object.
class MyClass {
public:
int x;
// Non-parameterized constructor
MyClass() {
x = 30; // Initialize x to a default value
}
};

int main() {
MyClass obj; // Non-parameterized constructor is called
cout << obj.x; // Output: 30
return 0;
}
class MyClass {
public:
int x;
// Parameterized constructor with default
arguments
MyClass(int value = 20) {
x = value; // Initialize x with the provided
value or default value
}
};

int main() {
MyClass obj; // Default constructor is called
(uses default argument)
cout << obj.x; // Output: 20
return 0;
}
 There are different types of constructors, including the default
constructor, user-defined constructor, and constructor
overloading.
 Default Constructor\implicit Constructor
 A default constructor is a constructor that takes no arguments.

 If you do not define any constructor in a class, the C++ compiler


automatically provides a default constructor.

 It initializes the object with default values (e.g., 0 for integers)

 You can also explicitly define a default constructor.


class MyClass {
public:
int x;
// Default constructor
MyClass() {
x = 0; // Initialize x to 0
}
};

int main() {
MyClass obj; // Default constructor is called
cout << obj.x; // Output: 0
return 0;
}
 . User-Defined Constructor\Explicit Constructor

 A user-defined constructor is a constructor that is explicitly


defined by the programmer.

 It can take parameters to initialize the object with specific values.

 Unlike the default constructor, it allows you to customize the


initialization process based on the input values passed when the
object is created.
class MyClass {
public:
int x;
// User-defined constructor
MyClass(int value) {
x = value; // Initialize x with the provided value
}
};

int main() {
MyClass obj(10); // User-defined constructor is called
cout << obj.x; // Output: 10
return 0;
}
class MyClass {
public:
int x;
// Default constructor
MyClass() {
x = 0;
}
// Parameterized constructor
MyClass(int value) {
x = value;
}
// Another overloaded constructor
MyClass(int a, int b) {
x = a + b;
}
};
 int main() {
 MyClass obj1; // Default constructor is called
 MyClass obj2(5); // Parameterized constructor with one argument
 MyClass obj3(2, 3); // Parameterized constructor with two
arguments

 cout << obj1.x << endl; // Output: 0


 cout << obj2.x << endl; // Output: 5
 cout << obj3.x << endl; // Output: 5
 return 0;
 }
 If member variables are uninitialized, they will contain garbage
values. These are random or unpredictable values that were
already present in the memory location allocated for the object.
Using uninitialized variables can lead to undefined behavior,
which means your program may behave unpredictably, crash, or
produce incorrect results.
16.3.4 describe inheritance in
object oriented programming;
 Inheritance is a fundamental concept in Object-Oriented Programming
(OOP) that allows a class (called the child class or subclass) to
acquire properties and behaviors (attributes and methods) from
another class (called the parent class or superclass). This promotes
code reusability.
 Base Class (Superclass/Parent Class):
 The class whose properties and methods are inherited by another
class.
 It serves as the foundation for derived classes.
 Derived Class (Subclass/Child Class):
 The class that inherits properties and methods from the base class.
 It can extend or modify the behavior of the base class.
 Inheritance allows derived classes to reuse code from the base
class, reducing redundancy.

 Derived classes can add new properties or methods or override


existing ones from the base class.
 In C++, access specifiers control the visibility of class members
(variables and functions). They control how the members of a
class can be accessed from outside the class or within derived
classes
 There are three types:public → Accessible everywhere.
 protected → Accessible inside the class and its derived classes.
 private → Accessible only inside the class.
 Public Inheritance
 When a class inherits publicly from a base class:

 Public members of the base class remain public in the derived


class.

 Protected members of the base class remain protected in the


derived class.

 Private members of the base class are not accessible in the


derived class.
 Protected Inheritance
 When a class inherits protectedly from a base class:

 Public members of the base class become protected in the


derived class.

 Protected members of the base class remain protected in the


derived class.

 Private members of the base class are not accessible in the


derived class.
 3. Private Inheritance
 When a class inherits privately from a base class:

 Public members of the base class become private in the derived


class.

 Protected members of the base class become private in the


derived class.

 Private members of the base class are not accessible in the


derived class.
16.3.8 illustrate types of
inheritance in C++ programming
using different classes
 Single Inheritance
 In single inheritance, a class inherits from only one base class.
 2. Multiple Inheritance
 In multiple inheritance, a class can inherit from more than one
base class.
 3. Multilevel Inheritance
 In multilevel inheritance, a class is derived from a class which is
already derived from another class.
 4. Hierarchical Inheritance
 In hierarchical inheritance, multiple classes are derived from a
single base class.
 Hybrid (Virtual) Inheritance
 Hybrid inheritance is a combination of two or more types of
inheritance. It can be combination of
 multiple and multilevel inheritance.
 multiple and hierarchical inheritance.
 Polymorphism.
 Polymorphism, derived from Greek, means "many forms." In C+
+, it refers to the ability of a function, or operator to behave
differently based on the context. This allows for flexibility and the
ability to define multiple behaviors
Types of Polymorphism:
1. Compile-Time Polymorphism (Static Polymorphism/ Early
Binding):
Compile-Time Polymorphism is Achieved through function overloading
and operator overloading.
1. Function Overloading. Function overloading allows multiple
functions to have the same name but different parameters (number,
type, of parameters). The correct function is selected at compile time
based on the arguments passed.
2. Operator Overloading: Operator overloading allows you to redefine
the behavior of operators (e.g., +, -, *, /, etc.) for user-defined types
(e.g., classes). This makes it possible to use operators with objects in a
natural way.
3. Where behavior of operators is redefined for user-defined types.
 you can customize how operators work when they are used with
objects of your own classes.
 For example, you can define what the + operator should do when
it is used to add two objects of your class.
 Built-in types (e.g., int, float) already have predefined behaviors
for operators, and you cannot change those.
 By overloading operators, you can make your code more
readable and expressive.

 For example, instead of writing a function like add(obj1, obj2),


you can simply write obj1 + obj2.
 In C++, operators like +, -, *, and / have predefined behaviors for built-
in types (e.g., int, float, double).

 For example, + adds two numbers: 5 + 3 results in [Link], these


operators do not have predefined behaviors for user-defined types (e.g.,
classes or objects).

 Custom Behavior for User-Defined Types:

 Operator overloading allows you to define how these operators should


behave when used with objects of your class.

 For example: You can define what + should do when used with two
objects of your class (e.g., concatenate strings, add complex numbers,
etc.).You can define what - should do (e.g., subtract one object from
another).
2-Run-Time Polymorphism (Runtime Polymorphism, Late
Binding):
Achieved through virtual functions
1. Function Overriding:
2. Redefining a function in the derived class that exists in the base
class.
3. A derived class provides a specific implementation of a function
already defined in its base class, typically using virtual functions.
4. The overridden function in the derived class has the same name,
return type, and parameters as the function in the base class. This
enables runtime polymorphism, where the appropriate function is
called based on the object type at runtime.
 In C++, overriding is implemented using:

 Virtual functions in the base class.

 The override keyword (optional but recommended) in the derived


class to ensure the method is actually overriding a base class
method.
 The base class defines a function, and the derived class provides
its own implementation of that function.
 The overridden function in the derived class must have the same
name, return type, and parameters as the function in the base
class.
 To enable function overriding, the function in the base class must
be declared as virtual.
 class Base {
 public:
 virtual void functionName() {
 // Base class implementation
 }
 };

 class Derived : public Base {


 public:
 void functionName() override {
 // Derived class implementation
 }
 };
 virtual: The virtual keyword in the base class indicates that the
function can be overridden in derived classes.

 override: The override keyword in the derived class explicitly


indicates that the function is overriding a base class function
describe the concept of
abstraction in C++ programming;
 Abstraction is a fundamental concept in object-oriented
programming (OOP) that involves hiding the complex
implementation details and exposing only the essential features
of an object. It allows programmers to focus on what an object
does rather than how it does it.
 Hiding implementation details and showing only necessary
features.
 Simplifies complexity by exposing only relevant details.
 Uses abstract classes, or pure virtual functions (in C++).
 It focuses on what an object does rather than how it does it.
 In C++, abstract classes and pure virtual functions are tools to
implement abstraction.

 An abstract class is a class that cannot be instantiated and is


meant to be inherited by derived classes.

 A pure virtual function is a function declared in a base class but


has no implementation. It is marked with = 0.
 Derived classes must override the pure virtual function to provide
an implementation.
 Advantages of Abstraction
 Simplifies Complexity: Hides unnecessary details, making the
code easier to understand and maintain.

 Reusability: Abstract classes can be reused across multiple


derived classes.
Real-Life Applications of
Abstraction
 Banking Systems:

 Abstraction is used to hide the internal details of transactions, account


management, and security protocols.

 Example: A user interacts with an ATM interface without knowing how the backend
processes transactions.

 Operating Systems:

 Abstraction is used to hide hardware details from applications.

 Example: A program can read/write files without knowing how the operating system
manages disk storage

You might also like