.NET——物件导向与类别设计

物件导向

(1)为什么

      .NET程序开发=物件导向程式开发

(2)有什么

      1)物件(客观存在的实体,相当于对象)

         一个物件应该能够被识别(名称)、标榜自己的特性(属性)、一些特定的动作(方法)另在.NET          里所有物件的行为就像是物件一样

         物件参考:物体变数存放物体的参考,而不是物体自己,除非明确指出是在复制,否则物体不给予                   复制

      2)资源收集器

         .NET不用自己摧毁物件,使用资源收集器(Gc)来摧毁,于是就有了资源收集器这个机制

         特点:好用的机制;不需要开发人员做记忆管理工作;

               降低Run-time Error;但是在大的物件前最好自己立即将资源释放

      3)装箱(boxing)

         对值类型临时添加引用类型的“箱子”

         备注:实质型虽然可以看作物件但并不是object

         值类型有:char、integer、long、single、double、decimal。。。。。。

类别设计

(1)基础类别(就是类里面都有什么)

     1)字段:声明类的成员变量,获得数据,证明变量的存在

     2)属性:用来修改字段,以方法的方式提供类似field的存取功能。对数据是有保护作用的,有两个方       法get只读;set只写

     3)方法:用来执行一些动作的程式

     4)建构式初始化类别(就是静态初始化值):应注意事项一个类,只可以有一个静态构造函式静态构造                                             函式不可以有存取修饰词 (public, protected 等)不可                                             以有参数;不可以直接呼叫该函式

     5)数据的保护:即共有还是私有权限的设置

     备注:如果没有声明字段便进行数据的设定是不正确的


(2)共同类别

    是什么

    即被所有类别的执行体共同应用的成员,不需要建立类别的实体,既可以直接存取公用的成员

    什么时候用

    该资料是用于全域时,用于独立的模组时;

    了解两个概念:

    1)列举型别:当需要定义一组常数时就可以使用列举


.NET——物件导向与类别设计_第1张图片


    2)模组:即所有成员共用的类别




复制

(1)类型

    为物件提供复制的方法,没有直接复制的方法而是需要自己构造。有浅复制(Shallow  Copy)和深复制(DeepCopy),那么他们有什么区别呢?

    举个例子:

    深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,一个人名叫张三,后来用他克隆(假设法律允许)了另外一个人,叫李四,不管是张三缺胳膊少腿还是李四缺胳膊少腿都不会影响另外一个人。比较典型的就是Value(值)对象,如预定义类型Int32,Double,以及结构(struct),枚举(Enum)等。

    浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,可是还是同一个人,不管是张三缺胳膊少腿还是李四缺胳膊少腿,都是这个人倒霉。

 

<strong><span style="font-size:18px;">//浅拷贝
             publicobject Clone()
             {
                return this.MemberwiseClone();
             }
 //深拷贝
             publicobject DeepClone()
             {
                Person newP = new Person();
                newP.PName = this._PName;
                newP.pSex = this.pSex;
                return newP;
             }
 </span></strong>

(2)定义:

    浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.
    深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.


   总结:开始看到这个标题的时候很发懵,物件导向什么东西,类别又是什么西查了一下知识台湾和大陆叫法不一样而已,物件导向就是面向对象,之前所学的面向对象的技术都是适用的,此次新知道的有资源回器,boxing两种新机制,其次类别就是类,类包括什么与Vb、软工中学到的基本是一致的,之前在C#时字段与属性的疑惑时有了新的理解,最后就是浅复制和深复制,浅复制便是基本只是复制了类型和引用,而深复制便是全部复制成一个独立的对象

你可能感兴趣的:(.net,深复制和浅复制,物件导向)