C#继承中的对象范围

0 c# oop

我是开发和初学者的新手.我在C#学习OOP.我想知道以下概念: -

  1. 为什么Derived类对象被赋给基类对象,但它的反面却不是?
  2. 在这种情况下,派生类和基类对象之间的内存分配流是什么?
//I have done this practically

// This is base class

Student student = new Student();

//This is derived class
SchoolStudent schoolStudent = new SchoolStudent();
//derived class object is assigning to base class.. it is ok for the complier
student = schoolStudent;

//base class object is assigning to derived class... complier error
schoolStudent = student;
Run Code Online (Sandbox Code Playgroud)

Tig*_*ran 5

1)您将派生对象类型分配给它是您应用程序可扩展性的基础.的实际类型保持衍生,但它提出了在带状基部类的代码.你只在基类对象,采取行动在那里可以,所以不必所有的不同的对象类型代码的所有角落找寻.为了顺利工作,你可以使用多态性

Human h = new Student(); 
Run Code Online (Sandbox Code Playgroud)

Student,Mechanic,Doctor,Kid都是Humans,所以这成了树在那里Human是一个根.向后执行意味着将树向上滚动.谁是现在的根?您的代码层次结构中断

2)构造顺序从基类开始到上层.所以在上面的例子中:首先将被称为构造函数Human和之后的构造函数Student.