面向对象点滴

      1.面向对象最重要的几个概念:对象,类,接口,封装,继承,多态。

            1. 对象:在面向对象编程里面,万事万物都被视为对象,对象是对数据和操作的封装。

            2. 类:对一类对象的抽象。

            3. 接口:一组功能契约。

            4. 封装:隐藏对象细节。

            5. 继承:通过继承使得不必编写更多的代码,增加代码的复用性。

            6. 多态:面向对象非常好的特性,更是所有模式和构架的基础。多态允许运行时决定实例化哪个子类,再结合反射机制,可以将该变化点推迟到配置文件。

      2. CLR启动程序时会创建3个应用程序域,分别为系统域,共享域和默认域。
            系统域:负责创建共享域和默认程序域。它将系统库mscorlib.dll载入共享域。
            共享域:所有不属于任何特定代码将被加载到该域,包括基本类型等等。
            默认域:是应用程序域的一个实例,一般应用程序在此域运行。域之间的互访问,要通过.net remoting代理来实现。每个应用程序域都有自己的加载堆(高频堆,低频堆,代理堆),句柄表,接口虚表管理器和程序集缓存。

      3. 一个简单应用程序从CLR启动开始的一系列过程:
          CLR启动程序创建系统域,系统域负责加载共享域和默认程序域的创建。加载共享域包括加载mscorlib.dll等核心库。加载默认程序域,主要是加载客户程序的各个类型方法表,该方法表按照先基类后子类的顺序排列,方法表元素的顺序是:继承的虚方法,新的虚方法,实例方法,静态方法。而对象的创建过程是,递归分配父类的内存空间并调用相应的构造函数初始化各字段,直到System.Object对象为止。对象内存中包含:snycblc(同步块索引),TypeHandle(类型句柄,指向方法表),Instance Fields(实例字段),StringLiterals(字符串标签).其中Instance Fields也是按照先父类再子类的顺序创建。

      4. 对于接口的实现机制?待深入

      5. 对象继承后,根据对象原则决定是调用父类的虚方法还是子类的虚方法;根据就近原则决定是调用父类的字段还是子类的字段。

原文地址:https://www.cnblogs.com/im/p/1439013.html