第02天 .Net基础加强

1、 封装

1> 属性的封装:

属性封装字段:把变化封装一下,保留用户的使用方式

2> 把方法的多个参数封装成一个对象

3> 将一堆代码封装到一个方法中

4> 将一些功能封装到几个类中

5> 将一些具有相同功能的代码封装到了一个程序集中(dll、exe),并且对外提供统一的访问接口。(属性名、方法名等。)

2、 继承(:表示继承)

1> Base Class à 基类 Parent Class à 父类

2> Derived Classà 派生类 Child Class à 子类

3> 好处:提高代码的重用性;多态

4> 继承的特性

a> 继承的单根性:只能继承一个父类

b> 继承的传递性:子类继承父类是同时继承了父类从他的父类中继承的属性、字段和方法

6> C#任何一个类都默认继承自Object类,如果一个类没有继承任何类,则默认继承Object类。如果继承了一个类,则将覆盖默认继承的Object类。

3、 继承中的构造函数▲

1> 继承的时候,构造函数不能被继承。

2> 子类的构造函数会默认去调用父类中的无参数的构造函数。

3> 如果父类中没有无参数的构造函数,子类继承父类时会报错的,解决方案:

方案一: 在父类中增加一个无参数的构造函数。这时子类的构造函数就可以找到父类中的无参构造函数了。

方案二: 不修改父类,而是在子类中的构造函数后面通过:base(),显示去调用父类的某个构造函数,而不去调用无参的构造函数。

4、 通过this调用构造函数

作用:

1> 在当前类的构造函数后面通过:this()来调用当前类自己的其他构造函数。

public Person(string name) : this(string name,0,0,null){}

5、 对象初始化器(语法糖)

Person p = new Person(){Name=”yzk”,Age=18,Email=”yzk365@qq.com”}

6、 集合初始化器

List<int> list = new List<int>(){10,20,30,40}

7、 通过this和base调用类的成员

在一般情况下,如果子类继承了父类的成员。那么在子类中,通过this.成员或base.成员都是访问的是一样的。

除非父类中的成员子类继承后又重写了。

8、 五种常用的访问修饰符

1> private:私有的,只能在当前类内部来使用

2> protected:受保护的,只能在当前类内部,以及所有当前类子类的内部。

3> internal:只能在当前程序集内部访问,跨程序集是不能访问的

4> protected internal:相当于同时具有protected和internal的权限。可以在当前程序集或子类中(不同程序集也可以访问)访问。

5> public:任何地方都能访问

6> protected和internal没有可比性。protected是当前类内部与所有子类内吧可访问,而internal是在同一个程序集中可访问。 假如不在一个程序集中,但是依然存在继承关系,那么protected访问修饰符修饰类型依然可以访问。

9、 关于父类中私有成员的继承问题

(私有字段到底是有没有继承,这是一个有很大分歧的问题!!)

我认为子类并不能继承父类的私有属性和字段

10、 访问级别的约束(类的访问修饰符只有两种,一种是public 另一种是internal。如果什么都不写,默认是internal)

1> 子类的访问级别不能比父类的高(如果比父类的访问级别高的话,会暴露父类的成员)

2> 方法的参数和返回值类型必须与方法本身的访问修饰符一致

3> 属性的访问级别和属性的类型的访问级别(类的访问修饰符和类属性或字段的访问修饰符都高于【参数】的访问修饰符)

以上三种用于解决访问级别不一致的错误

11、 通过虚方法(virtual修饰)实现多态

1> 虚方法,virtual:是虚方法的时候,那么这个方法的子类中就可以被重写(override)了.当子类继承父类后,可以直接使用该方法,也可以将该方法重写。

2> 子类如果要重写父类中的方法,则需要在子类的Show方法前加一个override关键字。 子类重写父类的方法必须并且只能用override关键字。 此时,如果在子类中用this来调用则调用的是子类重用后的Show方法,如果在子类中用base来调用,则调用的依旧是父类中的Show方法。

3> 虚方法可以给父类中的方法一个实现,比如ToString()方法

虚方法必须有实现部分,哪怕是空实现。

12、 多态(为了保护程序的可扩展性):多态就是多种表现形态。

1> 开放封闭原则(对修改封闭,对扩展开放)

2> 多态就是指不同对象收到相同消息时,会产生不同行为,同一个类在不同的场合下表现出不同的行为特征。

3> 多态的作用:把不同的子类对象都当做父类来看,可以屏蔽不同子类对象之间存在的差异,写出通用代码,做出通用的编程,以适应需求的不断变化。

13、 静态成员-静态类 static

1> 调用静态方法的时候必须通过类名来直接调用,不能通过对象来调用。 也就是说,使用静态成员不需要实例化对象。

2> 静态成员会在整个应用程序退出时,才会释放资源,所以可以在整个应用程序中共享数据。

3> 静态类不能被实例化。不能被继承。

4> 由于静态成员会在整个程序退出时,才释放资源,所以尽量避免写静态字段和静态属性,最好只写静态方法。

5> 当给一个普通类添加静态字段后,系统会默认为该类生成静态构造函数【静态构造函数不能有访问修饰符、并且不能带参数】

6> 静态类的构造函数,只会在第一次使用静态类之前,执行,并且只会执行一次。 静态构造函数不能有访问修饰符,不能有参数。

7> 静态类不能多态。

8> 什么时候使用静态类和静态成员

a>什么情况下要将一个类标记为静态类

一般情况下是,当这个类是一个工具类,里面都是方法。为了让用户调用的时候方便,不需要实例化对象,这是可以给该类标记为static类(静态类),此时该类中只能包含静态成员不能包含实例成员。比如:Convert、Math、File、Console….

b>什么情况下需要在一个普通类中编写一个静态成员,而这个类不能标记为static

当这个类需要别实例化的时候,如果这个类中有一个成员是所有对象都共享的数据,这是可以 将该类中的成员标记为静态的,但是这个类还是一个实例类。

14、 静态类的补充—密封类 (sealed关键字)

1> 作用:

a> 不能被继承

b> 不能被重写

2> 是一个密封类,不能被继承

3> Sealed关键字,表示类不能被继承

4> 密封类表示不能别继承。String类。.Net系统中本身对字符串有很多特殊处理(为String开了很多“绿灯”,String有很多特权,比如:不可变性,字符串池等等…),防止别的类继承后照成混乱。商业问题。

5> 禁止子类重写父类的方法。

【基础知识】.Net基础加强 第二天的更多相关文章

  1. Linux基础知识与基础命令

    Linux基础知识与基础命令 系统目录 Linux只有一个根目录,没有盘符的概念,文件目录是一个倒立的树形结构. 常用的目录功能 bin 与程序相关的文件 boot 与系统启动相关 cdrom 与Li ...

  2. java线程基础知识----线程基础知识

    不知道从什么时候开始,学习知识变成了一个短期记忆的过程,总是容易忘记自己当初学懂的知识(fuck!),不知道是自己没有经常使用还是当初理解的不够深入.今天准备再对java的线程进行一下系统的学习,希望 ...

  3. day63:Linux:nginx基础知识&nginx基础模块

    目录 1.nginx基础知识 1.1 什么是nginx 1.2 nginx应用场景 1.3 nginx组成结构 1.4 nginx安装部署 1.5 nginx目录结构 1.6 nginx配置文件 1. ...

  4. 这些C++基础知识的基础知识你都学会了吗?

    一.C++基础知识 新的数据类型 C语言中的数据类型  C++中新的数据类型 思考:新的数据类型有什么好处?请看下面的代码:  可以见得:新的类型使整个程序更加简洁,程序变得易读易懂!这个就是bool ...

  5. Java基础知识二次学习-- 第二章 基础语法与递归补充

    第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下 ...

  6. Ceph基础知识和基础架构认识

    1  Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...

  7. Ceph 基础知识和基础架构认识

    1  Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...

  8. 算法导论 - 基础知识 - 算法基础(插入排序&归并排序)

    在<算法导论>一书中,插入排序作为一个例子是第一个出现在该书中的算法. 插入排序: 对于少量元素的排序,它是一个有效的算法. 插入排序的工作方式像许多人排序一手扑克牌.开始时,我们手中牌为 ...

  9. 集合框架基础知识-----java基础知识

    Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashT ...

  10. web前端基础知识- Django基础

    上面我们已经知道Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Sessi ...

随机推荐

  1. 20155331 2016-2017-2 《Java程序设计》第5周学习总结

    20155331 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 一.Java异常的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时 ...

  2. Anaconda+django写出第一个web app(五)

    今天开始学习网页风格和设计,就像python有Web框架一样,也有一些CSS框架.对于CSS框架,我们可以使用默认的样式,也可以在原基础上编辑修改.本教程使用的是materialize这个CSS框架[ ...

  3. python Linux flask uwsgi nginx 在centos7.3部署

    0.直接上uwsgi和nginx安装命令 linux 安装uwsgi yum groupinstall "Development tools" yum install zlib-d ...

  4. SQL select语句执行顺序

    sql查询原理和Select执行顺序 关键字: 数据库 一 sql语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2) 语义分析,检查语句中涉及的所有数据库对象是 ...

  5. Oracle Certified Java Programmer 经典题目分析(二)

    ...接上篇 what is reserved(保留) words in java? A. run B. default C. implement D. import Java 关键字列表 (依字母排 ...

  6. int、long、long long取值范围

    unsigned   int   0-4294967295 int   -2147483648-2147483647 unsigned long 0-4294967295 long   -214748 ...

  7. centos 升级linux内核

    =============================================== 2018/1/14_第1次修改                       ccb_warlock == ...

  8. python面向对象(三)之继承

    继承 介绍 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力.继承即常说的is-a关系.子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承 ...

  9. matlab随笔(二)

    circshift 两种形式 :第一种Y = circshift(A,K)就不用说了,将A中的元素向右移动K个位置. 需要注意的是第二种形式:Y = circshift(A,K,dim),这种形式不好 ...

  10. 使用html+css+js实现魔性的舞蹈

    使用html+css+js实现魔性的舞蹈,让我们燥起来!!! 效果图: 代码如下,复制代码即可使用: <!DOCTYPE html> <html > <head> ...