现在的位置: 首页 > 综合 > 正文

C# 基础概念理解

2017年08月06日 ⁄ 综合 ⁄ 共 1957字 ⁄ 字号 评论关闭

     因为C# 是完全面向对象,所以在视频的第二部分花了很长的时间介绍了面向对象的知识。这些知识在前面也学习过,这次算是复习。同时也是对面向对象在C#中的运用中有了了解。面向对象的知识,主要就是很多概念的理解,对于概念真正的理解到位了,看代码就不那么困难了。

   
1、封装:例如看电视,我们通过遥控器就能够控制它,并不需要电视是怎么搜索频道、接收信号等工作,按下按钮,就能够换到另一个频道,我们只是把电视机当我们供我们娱乐的对象,它就想一个黑盒子,我们只要知道是怎么用的就行了。这实际上就是我们所说的面向对象的特点,封装。再如:我们写的代码,有时候只需要调用就行,不需要知道是怎么调过来的。

     好处:减少了耦合(耦合多了,修改一个类就要牵涉到很多);这样类内部可以实现自由的修改。(这个类,对外只是提供了一个接口而已),所以类有清晰的对外接口。

   
2、接口同样是电视机的例子。我们知道老的录像机除了能够与80年代电视机很好的工作,甚至能够接到最新的电视机上工作,为什么哦?因为电视机的音频和视频输出端口仍然没有什么变化。也就是说,电视机这个对象的对外接口是稳定的,接口的稳定保证了对象在各自发展的同时,还可以进行交互。所以对外接口的稳定性是十分重要的。再如10年前银行的接口,也就是提供的方法和参数大致是不变的,现在的不断的更新,只是内部的代码在部分功能上的提高,变
的更加的方便了。如果不稳定,想更新,那么就必须再重新做,将浪费大量的人力和物力。

    3、继承电视机从出现到不断的发展,从黑白到彩色,到高清晰,不管怎么变化,而声音、图像这些功能一直延续下来了,这在面向对象的理论中就是继承,后一代继承前一代的功能并有所发展。如Windows开发,Windows95到Windows98,在到现在的Windows
10系统,性能是不断的增强,但是基本的功能都继承下来了。

   4、:类的基本结构:字段、方法、属性等。字段:就是类中定义的变量,对象用来存储数据的地方。方法:描述对象可执行的操作,以封装在类中的函数的形式提供给用户使用,将类中的方法声明为公有以向外界提供访问类的接口。属性:描述对象的特性,我们已经特别的熟悉了。

   创建类的基本语法:

    访问修饰符 class 类名 

{

类成员列表

}

关于访问修饰符的权限,我想下面这张图或许能够说的更加的清楚。

   类的实例化:创建对象的过程。使用New关键字来实现。

5、构造和析构函数

构造函数:C# 使用构造函数控制新对象的初始化,因为在创建某个类时候,由于该对象的状态(数据)不是很明确,因此需要对此进行初始化。比如我们需要在长方形这个类中创建一个新的长方形,就要首先确定它的长和宽。如果我们不确定,我们是无法构造出来的。如果类内没有定义构造函数,系统会自动生成一个不带参数的构造函数。构造函数不能被继承。C#中的构造函数有三种:实例构造、私有构造和静态构造。

析构函数:析构函数是用来执行清除操作的特殊的方法。当对象超出了作用域或使用完了,不能总是占据系统资源,需要使用析构函数控制系统资源的释放。不能在结构中定义析构函数,只能对类使用析构函数。一个类只能有一个析构函数,无法继承和重载析构函数。析构函数没有修饰符,也没有参数。

  6、重载和重写

我们知道面向对象语言的四大特征:抽象、封装、继承和多态,而重写和重载是多态的两种编表现形式。

重载:重载主要发生在同一个类中,它通过多个名称相同的方法,但是方法参数不同。或者方法返回类型不同来加以区别。方法重载的条件:在同一个类中;方法名称相同;参数不同。

我们来看一下某个人的账单支出,3个账单都是PayBill(相同的方法),但是要支付不同的费用(不同的费用的计量方式不同)。支付移动电环费要精确到了分钟;电费是看按照度数来计量的。也就是方法的名字都是一样的,但是参数是不同。这样通过对方法的重载,就可以节省大量的代码。


    重写:重写体现的是继承的关系,是父类与子类之间的关系。具体讲就是重写父类的现有的方法。它要求子类的方法名称及参数必须与父类完全一致。比如吃饭,父亲可以吃两碗面,孩子同样也是吃面,却只能吃一碗 。重写只是对方法里里面的功能实现了重新做的编写,并没有对方法的参数进行添加、改变、删除。

重写父类的方法时,必须指明被重写的方法是虚方法(Virtual关键字)。在子类重写父类方法时候,必须有关键字(Override)这样才能重写父类的方法。

小结:

 对于这些概念的理解也只能是理论的掌握,可以说是共通的,但是不同的语言又有不同的实现。理论是抽象,但是对于不同的语言的具体的实现,还要多多的练习才行。对于这些概念如何在C#中实现的,现在只是能够看懂代码。但是离自己真正的动手还是不会,在以后的学习过程中还需要不断的实践。



抱歉!评论已关闭.