0% found this document useful (0 votes)
14 views33 pages

Inheritance Part 1

The document discusses inheritance in object-oriented programming. It defines inheritance as allowing a class to inherit properties and behaviors from another class. It provides examples of inheritance relationships like "every employee is a person". Derived classes inherit properties from base classes, with derived classes also called subclasses and base classes called superclasses. The document provides code examples demonstrating defining subclasses that inherit from base classes.

Uploaded by

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

Inheritance Part 1

The document discusses inheritance in object-oriented programming. It defines inheritance as allowing a class to inherit properties and behaviors from another class. It provides examples of inheritance relationships like "every employee is a person". Derived classes inherit properties from base classes, with derived classes also called subclasses and base classes called superclasses. The document provides code examples demonstrating defining subclasses that inherit from base classes.

Uploaded by

Inshal Yousaf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 33

Object Oriented Programming

Inheritance

Mr. Usman Wajid

[email protected]

Usman Wajid Object Oriented Programming Inheritance 1 / 12


What is Inheritance?

Inheritance
It is a concept in objected-oriented programming that allows a class to inherit properties
and behaviors from another class

Usman Wajid Object Oriented Programming Inheritance 2 / 12


What is Inheritance?

Inheritance
It is a concept in objected-oriented programming that allows a class to inherit properties
and behaviors from another class

• Inheritance is an ”is a” relationship. Example,


”every employee is a person”

Usman Wajid Object Oriented Programming Inheritance 2 / 12


What is Inheritance?

Inheritance
It is a concept in objected-oriented programming that allows a class to inherit properties
and behaviors from another class

• Inheritance is an ”is a” relationship. Example,


”every employee is a person”
• It allows us to create new classes from existing classes
• New classes are called the derived classes
• Existing classes are called the base classes

Usman Wajid Object Oriented Programming Inheritance 2 / 12


What is Inheritance?

Inheritance
It is a concept in objected-oriented programming that allows a class to inherit properties
and behaviors from another class

• Inheritance is an ”is a” relationship. Example,


”every employee is a person”
• It allows us to create new classes from existing classes
• New classes are called the derived classes
• Existing classes are called the base classes

• Derived classes inherit the properties of the base classes

Usman Wajid Object Oriented Programming Inheritance 2 / 12


Inheritance: Basic Syntax

class DerivedClass : member - access - specifier BaseClass


{
// members of derived class
};

Usman Wajid Object Oriented Programming Inheritance 3 / 12


Inheritance: Basic Syntax

class DerivedClass : member - access - specifier BaseClass


{
// members of derived class
};

• Where member-access-specifier can be public, protected or private (by default)

Usman Wajid Object Oriented Programming Inheritance 3 / 12


Inheritance: Basic Syntax

class DerivedClass : member - access - specifier BaseClass


{
// members of derived class
};

• Where member-access-specifier can be public, protected or private (by default)

• The private members of a base class are always private to the derived class

Usman Wajid Object Oriented Programming Inheritance 3 / 12


Inheritance: Basic Syntax

class DerivedClass : member - access - specifier BaseClass


{
// members of derived class
};

• Where member-access-specifier can be public, protected or private (by default)

• The private members of a base class are always private to the derived class

• Therefore, derived class objects can not directly access the private members of the
base class

Usman Wajid Object Oriented Programming Inheritance 3 / 12


Some Real-life Examples

Base class Derived class

Student Graduate Student


Undergraduate Student

Shape Circle
Rectangle

Employee Faculty Member


Staff member

Usman Wajid Object Oriented Programming Inheritance 4 / 12


Inheritance continued . . .

• Inheritance can be viewed as a tree-like, or hierarchical structure

Usman Wajid Object Oriented Programming Inheritance 5 / 12


Inheritance continued . . .

• Inheritance can be viewed as a tree-like, or hierarchical structure

• The base class is shown at the top with respective derived classes arranged in a
hierarchical order

Usman Wajid Object Oriented Programming Inheritance 5 / 12


Inheritance continued . . .

• Inheritance can be viewed as a tree-like, or hierarchical structure

• The base class is shown at the top with respective derived classes arranged in a
hierarchical order

Usman Wajid Object Oriented Programming Inheritance 5 / 12


Inheritance continued . . .

1 Single Inheritance: When a new class is derived from only a single base class.

2 Multiple Inheritance: When a new class is derived from multiple base classes.

Usman Wajid Object Oriented Programming Inheritance 6 / 12


Defining a simple subclass

• Each individual class can be used as a base class (or


super-class) to derive a new class (sub-class)

Usman Wajid Object Oriented Programming Inheritance 7 / 12


Defining a simple subclass

• Each individual class can be used as a base class (or


super-class) to derive a new class (sub-class)
• It’s also allowed to use more than one superclass to
define a subclass.

Usman Wajid Object Oriented Programming Inheritance 7 / 12


Defining a simple subclass

• Each individual class can be used as a base class (or


super-class) to derive a new class (sub-class)
• It’s also allowed to use more than one superclass to
define a subclass.
• Note: the arrows always point to the superclass(es).

Usman Wajid Object Oriented Programming Inheritance 7 / 12


Defining a simple subclass

• Each individual class can be used as a base class (or


super-class) to derive a new class (sub-class)
• It’s also allowed to use more than one superclass to
define a subclass.
• Note: the arrows always point to the superclass(es).

• We can refer super-classes as base classes , and


sub-classes as derived classes

Usman Wajid Object Oriented Programming Inheritance 7 / 12


Inheritance Example 1
class Super {
private :
int x ;
public :
void setX ( int x ) {
this - > x = x ;
}
int const getX () {
return x ;
}
};

class Sub : Super {


};

int main () {
Sub obj ;
obj . setX (10) ;
cout < < " x = " << obj . getX () << endl ;

Usman Wajid Object Oriented Programming Inheritance 8 / 12


Inheritance Example 1
class Super {
private :
int x ;
public :
void setX ( int x ) {
this - > x = x ; • This syntax is same as,
}
int const getX () { class Sub : private Super {
return x ; };
}
};

class Sub : Super {


};

int main () {
Sub obj ;
obj . setX (10) ;
cout < < " x = " << obj . getX () << endl ;

Usman Wajid Object Oriented Programming Inheritance 8 / 12


Inheritance Example 1
class Super {
private :
int x ;
public :
void setX ( int x ) {
this - > x = x ; • This syntax is same as,
}
int const getX () { class Sub : private Super {
return x ; };
}
};
• This will give a compilation error
class Sub : Super {
};

int main () {
Sub obj ;
obj . setX (10) ;
cout < < " x = " << obj . getX () << endl ;

Usman Wajid Object Oriented Programming Inheritance 8 / 12


Inheritance Example 1
class Super {
private :
int x ;
public :
void setX ( int x ) {
this - > x = x ; • This syntax is same as,
}
int const getX () { class Sub : private Super {
return x ; };
}
};
• This will give a compilation error
class Sub : Super {
}; • Because the private access specifier
int main () { manipulates even the public members
Sub obj ; of Super class as private
obj . setX (10) ;
cout < < " x = " << obj . getX () << endl ;

Usman Wajid Object Oriented Programming Inheritance 8 / 12


Inheritance Example 1 continued . . .

class Super {
private :
int x ;
public :
void setX ( int x ) {
this - > x = x ;
}
int const getX () {
return x ;
}
};

class Sub : public Super {


};

int main () {
Sub obj ;
obj . setX (10) ;
cout < < " x = " << obj . getX () << endl ;

}
Usman Wajid Object Oriented Programming Inheritance 9 / 12
Inheritance Example 1 continued . . .

class Super { • In,


private :
int x ; class Sub: public Super
public :
void setX ( int x ) { the keyword public doesn’t mean that
this - > x = x ; all the members of Super class will
}
int const getX () { become public
return x ;
}
};

class Sub : public Super {


};

int main () {
Sub obj ;
obj . setX (10) ;
cout < < " x = " << obj . getX () << endl ;

}
Usman Wajid Object Oriented Programming Inheritance 9 / 12
Inheritance Example 1 continued . . .

class Super { • In,


private :
int x ; class Sub: public Super
public :
void setX ( int x ) { the keyword public doesn’t mean that
this - > x = x ; all the members of Super class will
}
int const getX () { become public
return x ;
} • Instead, it means that only public
};
members of Super class can be
class Sub : public Super { accessed by the Sub class objects
};

int main () {
Sub obj ;
obj . setX (10) ;
cout < < " x = " << obj . getX () << endl ;

}
Usman Wajid Object Oriented Programming Inheritance 9 / 12
Inheritance Example 1 continued . . .

class Super { • In,


private :
int x ; class Sub: public Super
public :
void setX ( int x ) { the keyword public doesn’t mean that
this - > x = x ; all the members of Super class will
}
int const getX () { become public
return x ;
} • Instead, it means that only public
};
members of Super class can be
class Sub : public Super { accessed by the Sub class objects
};
• Hence, statements such as obj.x =
int main () {
Sub obj ; 10 or cout<<obj.x; are not allowed
obj . setX (10) ; here
cout < < " x = " << obj . getX () << endl ;

}
Usman Wajid Object Oriented Programming Inheritance 9 / 12
Inheritance Example 1 continued . . .

class Super { • In,


private :
int x ; class Sub: public Super
public :
void setX ( int x ) { the keyword public doesn’t mean that
this - > x = x ; all the members of Super class will
}
int const getX () { become public
return x ;
} • Instead, it means that only public
};
members of Super class can be
class Sub : public Super { accessed by the Sub class objects
};
• Hence, statements such as obj.x =
int main () {
Sub obj ; 10 or cout<<obj.x; are not allowed
obj . setX (10) ; here
cout < < " x = " << obj . getX () << endl ;

} • Output:
Usman Wajid Object Oriented Programming Inheritance 9 / 12
Inheritance Example 2
class Person {
private :
string name ;
int age ;
public :
void setName ( string name ) { int main () {
this - > name = name ; Student ali ;
} ali . setName ( " Ali Imran " ) ;
string getName () { return name ; } ali . setAge (12) ;
ali . setRollNo (01) ;
void setAge ( int age ) { ali . setSec ( ’A ’) ;
this - > age = age ;
} cout < < " name :\ t " << ali . getName () << endl ;
int getAge () { return age ; } cout < < " age :\ t " << ali . getAge () << endl ;
}; cout < < " rollno :\ t " << ali . getRollNo () << endl ;
class Student : public Person { cout < < " sec :\ t " << ali . getSec () << endl ;
private : }
int rollNo ;
char sec ;
public :
void setRollNo ( int rollNo ) {
this - > rollNo = rollNo ;
}
int getRollNo () { return rollNo ; }
void setSec ( char sec ) {
this - > sec = sec ;
}
char getSec () { return sec ; }
};

Usman Wajid Object Oriented Programming Inheritance 10 / 12


Inheritance Example 2
class Person {
private :
string name ;
int age ;
public :
void setName ( string name ) { int main () {
this - > name = name ; Student ali ;
} ali . setName ( " Ali Imran " ) ;
string getName () { return name ; } ali . setAge (12) ;
ali . setRollNo (01) ;
void setAge ( int age ) { ali . setSec ( ’A ’) ;
this - > age = age ;
} cout < < " name :\ t " << ali . getName () << endl ;
int getAge () { return age ; } cout < < " age :\ t " << ali . getAge () << endl ;
}; cout < < " rollno :\ t " << ali . getRollNo () << endl ;
class Student : public Person { cout < < " sec :\ t " << ali . getSec () << endl ;
private : }
int rollNo ;
char sec ;
public :
void setRollNo ( int rollNo ) {
this - > rollNo = rollNo ;
}
int getRollNo () { return rollNo ; }
void setSec ( char sec ) {
this - > sec = sec ;
}
char getSec () { return sec ; }
};

Usman Wajid Object Oriented Programming Inheritance 10 / 12


Inheritance Example 3:
class Person { class Student : public Person {
private : private :
string name ; int rollNo ;
int age ; char sec ;
public : public :
Person ( string name = " N / A " , int age =0) Student ( string name = " N / A " , int age =0 ,
{ int rollNo =0 , char sec = ’ - ’) :
setName ( name ) ; Person ( name , age )
setAge ( age ) ; {
} setRollNo ( rollNo ) ;
void setName ( string name ) { setSec ( sec ) ;
this - > name = name ; } } // end Student c o n s t r u c t o r
string getName () { return name ; } void setRollNo ( int rollNo ) {
this - > rollNo = rollNo ; }
void setAge ( int age ) { int getRollNo () { return rollNo ; }
this - > age = age ; } void setSec ( char sec ) { this - > sec = sec ; }
int getAge () { return age ; } char getSec () { return sec ; }
}; };

int main () {
Student ali ;

cout < < " name :\ t " << ali . getName () << endl ;
cout < < " age :\ t " << ali . getAge () << endl ;
cout < < " rollno :\ t " << ali . getRollNo () << endl ;
cout < < " sec :\ t " << ali . getSec () << endl ;
}

Usman Wajid Object Oriented Programming Inheritance 11 / 12


Inheritance Example 3:
class Person { class Student : public Person {
private : private :
string name ; int rollNo ;
int age ; char sec ;
public : public :
Person ( string name = " N / A " , int age =0) Student ( string name = " N / A " , int age =0 ,
{ int rollNo =0 , char sec = ’ - ’) :
setName ( name ) ; Person ( name , age )
setAge ( age ) ; {
} setRollNo ( rollNo ) ;
void setName ( string name ) { setSec ( sec ) ;
this - > name = name ; } } // end Student c o n s t r u c t o r
string getName () { return name ; } void setRollNo ( int rollNo ) {
this - > rollNo = rollNo ; }
void setAge ( int age ) { int getRollNo () { return rollNo ; }
this - > age = age ; } void setSec ( char sec ) { this - > sec = sec ; }
int getAge () { return age ; } char getSec () { return sec ; }
}; };

int main () {
Student ali ;

cout < < " name :\ t " << ali . getName () << endl ;
cout < < " age :\ t " << ali . getAge () << endl ;
cout < < " rollno :\ t " << ali . getRollNo () << endl ;
cout < < " sec :\ t " << ali . getSec () << endl ;
}

Usman Wajid Object Oriented Programming Inheritance 11 / 12


Inheritance Example 3 with Default constructors
class Person { class Student : public Person {
private : private :
string name ; int rollNo ;
int age ; char sec ;
public : public :
Person ( string name = " N / A " , int age =0) Student ( string name = " N / A " , int age =0 ,
{ int rollNo =0 , char sec = ’ - ’) :
setName ( name ) ; Person ( name , age )
setAge ( age ) ; {
} setRollNo ( rollNo ) ;
void setName ( string name ) { setSec ( sec ) ;
this - > name = name ; } } // end Student c o n s t r u c t o r
string getName () { return name ; } void setRollNo ( int rollNo ) {
this - > rollNo = rollNo ; }
void setAge ( int age ) { int getRollNo () { return rollNo ; }
this - > age = age ; } void setSec ( char sec ) { this - > sec = sec ; }
int getAge () { return age ; } char getSec () { return sec ; }
}; };

int main () {
Student ali ( " Ali Imran " , 12 , 01 , ’A ’) ;

cout < < " name :\ t " << ali . getName () << endl ;
cout < < " age :\ t " << ali . getAge () << endl ;
cout < < " rollno :\ t " << ali . getRollNo () << endl ;
cout < < " sec :\ t " << ali . getSec () << endl ;
}

Usman Wajid Object Oriented Programming Inheritance 12 / 12


Inheritance Example 3 with Default constructors
class Person { class Student : public Person {
private : private :
string name ; int rollNo ;
int age ; char sec ;
public : public :
Person ( string name = " N / A " , int age =0) Student ( string name = " N / A " , int age =0 ,
{ int rollNo =0 , char sec = ’ - ’) :
setName ( name ) ; Person ( name , age )
setAge ( age ) ; {
} setRollNo ( rollNo ) ;
void setName ( string name ) { setSec ( sec ) ;
this - > name = name ; } } // end Student c o n s t r u c t o r
string getName () { return name ; } void setRollNo ( int rollNo ) {
this - > rollNo = rollNo ; }
void setAge ( int age ) { int getRollNo () { return rollNo ; }
this - > age = age ; } void setSec ( char sec ) { this - > sec = sec ; }
int getAge () { return age ; } char getSec () { return sec ; }
}; };

int main () {
Student ali ( " Ali Imran " , 12 , 01 , ’A ’) ;

cout < < " name :\ t " << ali . getName () << endl ;
cout < < " age :\ t " << ali . getAge () << endl ;
cout < < " rollno :\ t " << ali . getRollNo () << endl ;
cout < < " sec :\ t " << ali . getSec () << endl ;
}

Usman Wajid Object Oriented Programming Inheritance 12 / 12

You might also like