Let’s draw a sketch:
Person
Employee (Employee can be though as a subset of Person)
Manager (Manager can be though as a subset of Employee)
so every Manager
is Employee
, every Employee
is Person
. The sequence is transitive, and thus every Manager
is Person
. Now, let’s see
Person alice = new Employee();
You’ve created an Employee
instance (new Employee();
) and then try to assign it to Person
(Person alice =
) instance; since every Employee
is Person
you can do it.
On the contrary:
Manager cindy = new Employee();
You’ve created an Employee
instance and then try to assign it to Manager
instance. You can’t do it since there’s no such a rule that every Employee
is Manager
(Quite the opposite: every Manager
is Employee
, but not vice versa).
solved I am finding it hard to understand inheritance in C# [closed]