23 是时候学点面向对象的东东了

1. 面向对象vs面向过程程序员

 

C#是一种面向对象的编程语言。那么什么是面向对象的编程呢?在没有面向对象的编程语言前,那时候的编程语言叫什么?编程

面向对象的编程是将对象做为程序的基本单元,将程序和数据封装其中,以提升软件的重用性、灵活性和扩展性,对象里的程序能够访问及常常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。面向对象程序设计能够看做一种在程序中包含各类独立而又互相调用的对象的思想。微信

在面向对象的编程思想出现前,传统的编程思想和编程语言是面向过程的。面向过程的编程是在面向对象编程出现之前很是流行的编程方法论。(软件行业的变化很快的,之前很流行的东西,随着新的东西不停的出来,没有多久就out了。)它主张将程序看做一系列函数的集合。程序经过调用一系列函数从而完成一个特定的功能。数据和函数是分开。编程语言

“面向过程”的分析就是分析出解决问题所须要的步骤,而后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就能够了。模块化

面向对象程序设计中的每个对象都把数据和功能集合成一个总体。都应该可以接受数据、处理数据并将数据传达给其它对象,所以它们均可以被看做一个小型的“机器”,即对象。函数

“面向对象”的分析是把构成问题事务分解成各个对象,创建对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为还有各个事物之间的互动。学习

 

举个例子:spa

如何把大象装进冰箱?
面向过程: 为了把大象装进冰箱,须要3个过程。这三个过程能够对应三个函数。 1) 把冰箱门打开 2) 把大象装进去 3) 把冰箱门关上 依次完成这些过程,就能把大象装进冰箱。
 
面向对象: 分析把大象装进冰箱这个事情,咱们分析出两个对象,大象和冰箱。 其中冰箱须要作三个动做,也就是三个方法。第二个动做要和大象互动。 1) 冰箱,你给我把门打开。   冰箱.开门()     2) 冰箱,你给我把大象装进去。 冰箱.装进(大象) 3) 冰箱,你给我把门关上。冰箱.关门() 依次作这些动做,就能把大象装进冰箱。

面向过程实际上是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想.能够说面向过程是一种基础的方法.它考虑的是实际地实现.通常的面向过程是从上往下步步求精.因此面向过程最重要的是模块化的思想方法.对比面向过程,面向对象的方法主要是把事物给对象化,对象包括属性与行为。
 
我试着和你们解释了一下什么是面向对象,什么是面向过程。不知道你有没有搞清楚。可是我必定要给你一个忠告。
做为一个程序员, 你选择面向过程, 就找不到对象。
少年, 你可要想好了再选择啊 
 

2. 面向对象编程两个最重要的概念:类和对象。设计

  • 类(Class):定义了一件事物的抽象特色。类的定义包含了数据以及对数据的操做方法。
  • 对象:是类的实例。

举个例子帮助你们理解类和对象。code

车能够定义成一个类。它有颜色,品牌,行驶里程等属性,有启动发动机,中止发动机等功能。个人车就是车的一个实例,也就是车的一个对象。它的颜色是黑色的,它的品牌是奔驰(我梦想的品牌),它行驶1万千米,它有启动发动机,中止发动机等功能。个人车是一个独一无二的实际存在的。而做为类的车就是一个类别。咱们能够说个人车是一个车。能够用这个类别构建出各类有不一样属性的车。

 

在咱们前面的代码中已经接触到了C#的类(class)还有类的方法。咱们的代码主要都放在Program 类的Main方法里边。咱们也建立了咱们本身的方法。同时咱们也使用了类Console的writeline等方法。 

在C#中几乎全部的东西都是和类相关的。咱们编写的程序是由不一样的类组成的。在每一个类中能够有不一样的属性和方法。如何去设计类和使用类呢?这就是面向对象编程要帮助咱们解决的事情。 

 

3. 静态成员和实例成员

 

在类的成员的类型或者返回值类型前面加上关键字static,就能将该成员定义为静态成员(static member)。其余没有用static修饰的成员都是实例成员(instance member)或者称为非静态成员。静态成员属于类,被这个类的全部实例所共享;实例成员属于对象(类的实例),每个对象都有实例成员的不一样副本。

 

静态成员具备下列特征:

 

— 静态成员必须经过类名使用 . 运算符来引用,而不能用对象来引用。

 

— 一个静态字段只标识一个存储位置。不管建立了一个类的多少个实例,它的静态字段在内存中都只占同一块区域。

 

— 静态函数成员(方法、属性、事件、运算符或构造函数)不能做用于具体的实例,在这类函数成员中不能直接使用实例成员,必须经过类名来引用。

 

实例成员具备如下特色:

 

— 实例成员必须经过对象名使用 . 运算符来引用,而不能用类名来引用。

 

— 类的实例字段属于类的实例全部,每建立一个类的实例,都在内存中为实例字段开辟了一块区域。类的每一个实例分别包含一组该类的全部实例字段的副本。

 

— 实例函数成员(方法、属性、索引器、实例构造函数或析构函数)做用于类的给定实例,在它们的代码体内能够直接引用类的静态和实例成员。

 

其实,咱们在前面的几章中大量使用的Console类的WriteLine等方法都是静态方法,都是经过类名Console来引用的。

 

 

4. 面向对象编程的三个特性:封装,继承与复合,多态

 

三大特性之一 封装

 

1.什么是封装?

      封装又叫隐藏实现。就是只公开代码单元的对外接口,而隐藏其具体实现。

      好比咱们的手机,手机的键盘,屏幕,听筒等,就是其对外接口。咱们只须要知道如何按键就可使用手机,而不须要了解手机内部的电路是如何工做的。封装机制就像手机同样只将对外接口暴露,而不须要用户去了解其内部实现。细心观察,现实中不少东西都具备这样的特色。

 

2.如何实现封装?            

在程序设计里,封装每每是经过访问控制实现的。C#中有 Public, Protected, Private 等访问控制符。经过用Public将信息暴露,Private,Protected将信息隐藏,来实现封装。

三大特性之二 继承与组合     

 

1.继承

       经过继承子类能够重用父类的代码。  

 

2.组合

 组合即将各个部分组合在一块儿。程序设计中就是用已有类的对象来产生新的类。 

桌子由木板和钉子组合而成,台灯使用灯座,灯管,电线,接头等拼起来的。咱们发现本身周围的不少东西都是由更小的其它东西拼凑构成的,就像积木同样。相信你小的时候也曾拆开过许多你以为好奇的东西,去一看究竟。去看看这个新的类(class)究竟是由那些其余的类构成的。其实在你很小的时候你已经理解了组合。

程序设计中,组合体如今生成的新类里用到了现有类的实例,具体的代码例子在这里也不给出了,相信你一看就能明白。组合使生成新类更加简便和直观,实现也很是容易,相比继承这种经过已有类构造新类的方法,大多数人(包括在现实生活中)更喜欢组合。  

 

三大基石之三 多态


 多态是一个相对难理解的概念。多态和继承是紧密联系在一块儿的,没有继承就谈不上多态。

多态就是把不一样的子类对象都看成父类来看,能够屏蔽不一样子类对象之间的差别,写出通用的代码,作出通用的编程,以适应需求的不断变化。
赋值以后,父对象就能够根据当前赋值给它的子对象的特性以不一样的方式运做。仍是很抽象啊。举个例子吧。
 
车是父类。它有一个方法叫启动。
汽油车是车的一个子类。它也有一个方法叫启动,实现的功能是启动汽油车。
电动车也是是车的一个子类。它也有一个方法叫启动,实现的是启动电动车。
 
如今有个方法
启动车(车){ 车.启动();}

当咱们把汽油车的一个对象做为参数传递给这个方法时,它会自动调用汽油车的启动方法。一样当咱们把电动车车的一个对象做为参数传递给这个方法时,它会自动调用电动车的启动方法。当咱们后来有新建了柴油车,太阳能车的时候,咱们不用修改这个方法。将柴油车,太阳能车类型的对象做为参数传递给这个方法时,它就自动调用它们相应的启动方法。
           

 

 

 


付费解答C#入门学习过程当中碰到的各类问题。

零基础学习C#入门,大多数的问题均可以经过自学或借助互联网解决。

可是仍是会有一些问题,不是那么容易解决,成为了你学习的绊脚石。最后甚至形成你学习的半途而废。一般学习C#编程入门,你会遇到20到30多个你不能很容易解决的问题。

这个时候,你最须要什么呢?

对!一个专业的老师给你帮助!

你在学习本课程中,遇到任何问题均可以经过qq或email想本教程做者进行求助。

只需30元你就能够获得本教程做者的三次专业解答。因此你只需不到300元就能够顺利的完成C#入门,今后推开软件行业的大门。

 

付费方式很是简单:

用微信扫描下面的二维码。在付款留言中留下你的qq号或email地址就能够啦。

 

教育不是要便宜,而是要可靠!真正聪明的人,更懂得花钱让专业的人为本身服务,提升本身的效率。

 

老师qq:2040227296

老师email:2040227296@qq.com

相关文章
相关标签/搜索