object

Account

Saving
Account

Current
Account

Bhushan Mulmule
bhushan.mulmule@gmail.com
bhushan.mulmule@dotnetvideotutorial.com
www.dotnetvideotutorial.com


Part I
◦ Inheritance: When, Why, How
◦ Inheritance in .NET Framework
◦ Inheritance Demo Example



Part II
◦ Constructor Flow in Inheritance



Part III
◦ Access Modifiers: private, public, protected, internal, protected internal
www.dotnetvideotutorial.com
www.dotnetvideotutorial.com
Inheritance enables you to create new classes that reuse, extend,
and modify the behavior that is defined in other classes.
Base class

class MyBase
{
private int field1;
public void fun1() { }
}

Derived class

class MyDerived : MyBase
{
private int field2;
public void fun2() { }
}

Object of
MyDerived

obj
field1
www.dotnetvideotutorial.com

field2
www.dotnetvideotutorial.com
OnRollEmployee
EmpNo
Name
Department

Designation
BasicSalary
HRA
GrossSalary
PF

OffRollEmployee
EmpNo
Name
Department
Designation
PerHourRate
WorkedHours
NetSalary

NetSalary
www.dotnetvideotutorial.com
Employee

Generalized Base Class

EmpNo
Name
Department
Designation
NetSalary

Specialized Derived Class

OffRollEmployee

OnRollEmployee
BasicSalary

PerHourRate

HRA

WorkedHours

GrossSalary
PF
www.dotnetvideotutorial.com
object

object

Account

StackHolder

Client

Customer

Supplier

www.dotnetvideotutorial.com

Saving
Account

Current
Account
www.dotnetvideotutorial.com
www.dotnetvideotutorial.com
www.dotnetvideotutorial.com
www.dotnetvideotutorial.com


inheritance hierarchy represents an "is-a" relationship and not a
"has-a" relationship.



can reuse code from the base classes.



need to apply the same class and methods to different data
types.



The class hierarchy is reasonably shallow, and other developers
are not likely to add many more levels.



want to make global changes to derived classes by changing a
base class.

www.dotnetvideotutorial.com


Every class directly of indirectly derives from object
class



Multiple class Inheritance is not allowed.



Multilevel is obvious!



Multiple interface implementation is possible.

www.dotnetvideotutorial.com


Part I
◦ Inheritance: When, Why, How
◦ Shadowing
◦ Inheritance Demo Example



Part II
◦ Constructor Flow in Inheritance



Part III
◦ Access Modifiers: private, public, protected, internal, protected internal
www.dotnetvideotutorial.com



Constructor never get derived
Always base class constructor executes first.

www.dotnetvideotutorial.com
class MyBase
{
protected int no1, no2;

class MyDerived : MyBase
{
private int no3;

public MyBase()
{
}

public MyDerived() : base()
{
}

public MyBase(int n1,int n2)
{
this.no1 = n1;
this.no2 = n2;
}

public MyDerived(int n1,int n2,int n3)
: base(n1,n2)
{
this.no3 = n3;
}

}

}

Client Code
MyDerived obj1 = new MyDerived();
MyDerived obj2 = new MyDerived(10, 20, 30);

no1

no2

no3
www.dotnetvideotutorial.com


Part I
◦ Inheritance: When, Why, How
◦ Shadowing
◦ Inheritance Demo Example



Part II
◦ Constructor Flow in Inheritance



Part III
◦ Access Modifiers: private, public, protected, internal, protected internal
www.dotnetvideotutorial.com
Access modifiers are keywords used to specify the declared
accessibility of a member or a type
public

• Access is not restricted.

private

• Access is limited to the containing type.

protected
internal
protected internal

• Access is limited to the containing class or types derived from the
containing class.

• Access is limited to the current assembly.

• Access is limited to the current assembly or types derived from the
containing class.
www.dotnetvideotutorial.com
Assembly - 1

Assembly - 2

class A
{
private int no1;
protected int no2;
internal int no3;
protected internal int no4;
public int no5;
}
class B : A
{
}
class C
{
}

class D : A
{
}
class E
{
}

What is accessible where?
no1

•A

no2

•A, B, D

no3

•A, B, C

no4

•A, B, C, D

no5

•A, B, C, D, E

www.dotnetvideotutorial.com
Bhushan Mulmule
bhushan.mulmule@dotnetvideotutorial.com
www.dotnetvideotutorial.com

Inheritance