前文链接:C#面向东西(一):明确几个简单的观点作为开胃菜
面向东西开发有三大特性(特点 / 特征) : 封装, 担任, 多态。我们今天主要讨论封装和担任,多态会不才篇中记录。
一、封装:所谓封装,也就是把客不雅观事物封装成抽象的类,并且类可以把本身的数据和要领只让可信的类或者东西操纵,对不成信的进行信息隐藏。封装是面向东西的特征之一,是东西和类观点的主要特性。简单的说,一个类就是一个封装了数据以及操纵这些数据的代码的逻辑实体。在一个东西内部,某些代码或某些数据可以是私有的,不能被外界访谒。通过这种方法,东西对内部数据供给了差别级另外掩护,以防备措施中无关的部分不测的转变或错误的使用了东西的私有部分。
1.1、封装五种访谒修饰符A.public [果然访谒]
果然的访谒权限。
当前类, 子类, 实例东西, 都可以访谒到。
B.private [私有访谒]
私有的访谒权限。
只能在当前类内部进行访谒使用; 子类, 实例东西, 都访谒不到。
C.protected [掩护访谒]
受掩护的访谒权限。
只能在当前类的内部,以及该类的子类中访谒;实例东西访谒不到。
D.internal [内部访谒]
只能在当前措施集(项目)中访谒;
(措施集可以理解为一个项目,一个项目也就是一个措施集。从设计的角度来说,也可以当作是一个完整的模块(Module),或者称为是包(Package)。因此,一个措施集也可以浮现为一个dll文件,或者exe文件。一个解决方案下可以用很多项目,项目名和定名空间名可以分袂设置,但默认情况下是一致的,而对应到项目的具体文件夹就是“项目的定名空间.文件夹名”https://www.cnblogs.com/wayfarer/archive/2006/04/07/369371.html)
在同一个项目中 internal 和 public 的访谒权限是一样的。
一个解决方案里面,可以有多个项目!
E.protected internal [内部掩护访谒]
protected + internal 的访谒权限。
用的不久不多,我是没用过的。
1.2、使用场合A.修饰类
能够修饰类的访谒修饰符只有两个, public 和 internal;
类的默认访谒修饰符是 internal。默认类就是那种前面没有修饰符的class
B.修饰类成员
五种访谒修饰符都可以修饰类中的成员;
类中的成员默认访谒修饰符是 private。
C.类视图
当前项目上右键-->视图-->检察类图
可以看到类的担任关系图, 以及类中的成员表面。
列位留意一下字段,属性,要领各自特有的图标。
字段是小砖块,还上锁了。属性是小扳手。要领是空的小盒子。
下面是类视图。
二、担任:
将一堆类中的一些共有的“成员”单独抽取出来,作为一个父类,然后这一堆类担任这个父类,共享父类的资源, 这就叫做担任。
以为酬报例,我们每小我私家城市有一些配合的特征,都要做一些不异的工作。好比:人都有一个脑袋,二只胳膊,二条脚,这是配合的特征。都要用饭,喝水,这是都要做的不异的工作。那么如果我们此刻要声明很多小我私家,每小我私家城市有这些特征,那我不是要写很多反复的代码?所以我们可以先建一小我私家的父类,这个父类不代表一个具体的人,只是一个拥有人所有配合特性的虚拟的人。下次我 们要实例化一个具体的人的时候,只需要将这小我私家担任上面这个“虚拟的人”,那么他就拥有了人的所有配合特性。这样,这些反复的代码我们就可以不写了。
固然,担任的方针不只仅是为了节省代码,还有实现后面的多态的成果。初学者只需要了解担任可以少写很多代码就好了,余下的需要在项目中慢慢理解。
书面的解释如下:东西的担任代表一种"is-a"的关系,假如两个东西A和B,如果可以描述为"B就是A",那么则暗示B可以担任自A。
注意: 如果A担任了B,那么A不只拥有了B除私有的特性外的所有特性,A还可以拥有本身奇特的特性。好比上面人的这个例子,一个担任了 “虚拟的人”,那么他除了有一个脑袋,二只胳膊,二条脚,要用饭喝水外,他可能还会编程。编程就是他奇特的特性了,因为不是每小我私家城市编程的。
2.1、担任的好处①优化代码布局, 让类与类之间孕育产生关系(人不是伶仃存在的, 类也一样);
②提高代码的复用性, 便于阅读(写更少的代码, 干更多的活);
③为“ 多态” 供给前提(多态是面向东西最庞大的一个特性, 后面重点讲解)。
2.2、生活中的例子以电视剧举例, 见图。
2.3、要领
(1)、延续:父类存在,子类没有重写但可以使用;
(2)、新增:父类没有,子类新增加的
(3)、重写:父类子类都存在,但是父类不满足要求,子类对其进行重新界说;
2.4、实例化:(1)、先父类后子类,先静态后成员;
实例化的时候先挪用父类的静态结构快,在挪用父类的结构要领,然后子类的结构块,,在挪用子类的结构要领;