c#简要概括面向对象的三大特征
2016-01-27 22:14
531 查看
要去面试了,朋友给我出个问题:
一,封装:
我们可以把世界上任何一个东西都看作为一个对象,那么我们这里以人为例,一个人就肯定是一个对象了。
那么封装是什么呢?
封装就是这个人要完成一件事情,他所需要的任何工具都带在了自己的身上,所需要的技术也都装在了自己的脑子里了。不需要借助于别人的力量就能完成这一件事情。这个有什么好处呢?好处就是如果我要吩咐这个人去完成一件事情,我不需要知道他是怎么完成的,也不需要协助他去完成,只要知道结果,他完成了就OK了。至于他是先干什么后干什么我不干涉,这有助于他更快更好的干好这件事情,我自己也省事。
书面的解释如下:
每个对象都包含它能进行操作所需要的所有信息,因此对象不必依赖其它的对象来完成自己的操作。
二,继承:
还以为人为例,我们每个人都会有一些共同的特征,都要做一些相同的事情。比如:人都有一个脑袋,二只胳膊,二条脚,这是共同的特征。都要吃饭,喝水,这是都要做的相同的事情。那么如果我们现在要声明很多个人,每个人都会有这些特征,那我不是要写很多重复的代码?所以我们可以先建一个人的父类,这个父类不代表一个具体的人,只是一个拥有人所有共同特性的虚拟的人。下次我 们要实例化一个具体的人的时候,只需要将这个人继承上面这个“虚拟的人”,那么他就拥有了人的所有共同特性。这样,这些重复的代码我们就可以不写了。
当然,继承的目标不仅仅是为了节省代码,还有实现后面的多态的功能。初学者只需要了解继承可以少写很多代码就好了,余下的需要在项目中慢慢理解。
书面的解释如下:
对象的继承代表一种"is-a"的关系,假如两个对象A和B,如果可以描述为"B就是A",那么则表示B可以继承自A。
注意:
如果A继承了B,那么A不仅拥有了B除私有的特性外的所有特性,A还可以拥有自己独特的特性。比如上面人的这个例子,一个继承了 “虚拟的人”,那么他除了有一个脑袋,二只胳膊,二条脚,要吃饭喝水外,他可能还会编程。编程就是他独特的特性了,因为不是每个人都会编程的。
三,多态:
有多态之前必须要有继承,只有多个类同时继承了同一个类,才有多态这样的说法。
实现多态,有二种方式,覆盖,重载。
还是以人为例子,前面我们有说过人都要做“吃饭”这样一个相同的事情。“吃饭”这个事情,体现到类中就是方法了。因为是人都是要做的,所以我们在“虚拟的人”中写好了这个方法,但每个人都有不同的吃饭方法,有用筷的也有用叉的,有要吃米饭的也有要吃面食的。所以如果我们要描述不同人的吃饭的过程,就要把这个过程放到具体的子类中去了,因为每个人都不一样嘛。同样一个方法,子类都有不同的实现方式,这个就是多态了,多态有助于程序的灵活性。
注意:子类中如果重写了父类的方法(多态),那么父类中的这个方法将不会再调用。
一,封装:
我们可以把世界上任何一个东西都看作为一个对象,那么我们这里以人为例,一个人就肯定是一个对象了。
那么封装是什么呢?
封装就是这个人要完成一件事情,他所需要的任何工具都带在了自己的身上,所需要的技术也都装在了自己的脑子里了。不需要借助于别人的力量就能完成这一件事情。这个有什么好处呢?好处就是如果我要吩咐这个人去完成一件事情,我不需要知道他是怎么完成的,也不需要协助他去完成,只要知道结果,他完成了就OK了。至于他是先干什么后干什么我不干涉,这有助于他更快更好的干好这件事情,我自己也省事。
书面的解释如下:
每个对象都包含它能进行操作所需要的所有信息,因此对象不必依赖其它的对象来完成自己的操作。
二,继承:
还以为人为例,我们每个人都会有一些共同的特征,都要做一些相同的事情。比如:人都有一个脑袋,二只胳膊,二条脚,这是共同的特征。都要吃饭,喝水,这是都要做的相同的事情。那么如果我们现在要声明很多个人,每个人都会有这些特征,那我不是要写很多重复的代码?所以我们可以先建一个人的父类,这个父类不代表一个具体的人,只是一个拥有人所有共同特性的虚拟的人。下次我 们要实例化一个具体的人的时候,只需要将这个人继承上面这个“虚拟的人”,那么他就拥有了人的所有共同特性。这样,这些重复的代码我们就可以不写了。
当然,继承的目标不仅仅是为了节省代码,还有实现后面的多态的功能。初学者只需要了解继承可以少写很多代码就好了,余下的需要在项目中慢慢理解。
书面的解释如下:
对象的继承代表一种"is-a"的关系,假如两个对象A和B,如果可以描述为"B就是A",那么则表示B可以继承自A。
注意:
如果A继承了B,那么A不仅拥有了B除私有的特性外的所有特性,A还可以拥有自己独特的特性。比如上面人的这个例子,一个继承了 “虚拟的人”,那么他除了有一个脑袋,二只胳膊,二条脚,要吃饭喝水外,他可能还会编程。编程就是他独特的特性了,因为不是每个人都会编程的。
三,多态:
有多态之前必须要有继承,只有多个类同时继承了同一个类,才有多态这样的说法。
实现多态,有二种方式,覆盖,重载。
还是以人为例子,前面我们有说过人都要做“吃饭”这样一个相同的事情。“吃饭”这个事情,体现到类中就是方法了。因为是人都是要做的,所以我们在“虚拟的人”中写好了这个方法,但每个人都有不同的吃饭方法,有用筷的也有用叉的,有要吃米饭的也有要吃面食的。所以如果我们要描述不同人的吃饭的过程,就要把这个过程放到具体的子类中去了,因为每个人都不一样嘛。同样一个方法,子类都有不同的实现方式,这个就是多态了,多态有助于程序的灵活性。
注意:子类中如果重写了父类的方法(多态),那么父类中的这个方法将不会再调用。
相关文章推荐
- C#中交换两个数的值
- 学习C#1(窗体与界面设计)
- c#中的泛型
- 几种C#程序读取MAC地址的方法
- 使用EPPlus(C#)读写Excel
- C#之正则表达式
- C#实时读取数据----局部页面刷新【转】
- C# 特性
- C# 将excel表格嵌入到Word中
- C# 将excel表格嵌入到Word中
- c# AES加解密并转ASCII码
- C#窗口传值及方法调用1--通过静态方法实现
- C#各种数组直接的数据复制/转换
- 【C#】改变物体顺序
- lock关键字只不过是C#提供的语法糖
- c#学习笔记——C#基础(一)
- C#在数据层过滤属性中的主键
- C# 友元函数
- c# internal
- 以逗号分隔的字符串,剔除重复的字符