【面向对象】这些基本概念,你都了解了吗(下)
2017-05-14 21:13
337 查看
零碎知识点杂乱,所以先放个思维导图当向导:
抽象类与接口
抽象类
【定义】
类按用途可分为两类,一类是用来描述对象的,另一类就是抽象类。关键字是abstract。
【特点】
(1)抽象类不能实例化
(2)抽象方法是必须被子类重写的方法
(3)如果类中包含抽象方法,那么类就必须定义为抽象类
【什么时候用】
当设计一个新的抽象类时,一定是用来继承的。在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。如上图。
接口(interface)
【定义】
接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。比如如果想把老鹰,飞机,超人联系在一起,那就可以创建一个飞行行为的接口。
一个类可以实现多个接口,多个类也可以支持相同的接口。
【和抽象类的区别】
这个需要注意。
【代码实现】
集合与泛型
集合
【定义】
集合:用于数据存储和检索的专用类,这些类统称为集合。大多数集合类实现相同的接口。
最常用的一种是ArrayList集合。
其与数组比的优点是:可随意地添加、插入或移除某一范围元素
其缺点是:ArrayList不是类型安全的(?)
【备注】
装箱:把值类型打包到Object引用类型的一个实例中
拆箱:从对象中提取值类型
泛型
【定义】
我们在编程的时候需要一个数据类型,但是在刚开始的时候还不确定这个数据类型是怎么样的,或者说对于不同的多个数据类型有相同的功能和相同的操作,又不想多次的写代码,就需要用到泛型,表示同一个操作针对不同的数据类型
【代码实现】
小结
对C#的面向对象基础的总结就算告一个段落了,以后还会再认识别的语言,到时再比较,然后加深理解。加油
抽象类与接口
抽象类
【定义】
类按用途可分为两类,一类是用来描述对象的,另一类就是抽象类。关键字是abstract。
【特点】
(1)抽象类不能实例化
(2)抽象方法是必须被子类重写的方法
(3)如果类中包含抽象方法,那么类就必须定义为抽象类
【什么时候用】
当设计一个新的抽象类时,一定是用来继承的。在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。如上图。
接口(interface)
【定义】
接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。比如如果想把老鹰,飞机,超人联系在一起,那就可以创建一个飞行行为的接口。
一个类可以实现多个接口,多个类也可以支持相同的接口。
【和抽象类的区别】
这个需要注意。
【代码实现】
interface IChange { string ChangeThing(string thing); } class MachineCat : CategoryAttribute, IChange { public MachineCat () :base() { } public MachineCat(string name) : base(name) { } public string ChangeThing(string thing) { return base.Shout() + "我有万能的口袋,我可变出:" + thing; } } private void button6_Click(object sender, EventArgs e) { MachineCat mcat=new MachineCat ("叮当") StoneMonkey wukong=new StoneMonkey ("孙悟空"); IChange[] array=new IChange [2] array [0]=mcat ; array [1]=wukong ; MessageBox .Show (array [0].ChangeThing ("各种各样的东西!")); MessageBox .Show (array [1].ChangeThing ("各种各样的东西!")); }
集合与泛型
集合
【定义】
集合:用于数据存储和检索的专用类,这些类统称为集合。大多数集合类实现相同的接口。
最常用的一种是ArrayList集合。
其与数组比的优点是:可随意地添加、插入或移除某一范围元素
其缺点是:ArrayList不是类型安全的(?)
【备注】
装箱:把值类型打包到Object引用类型的一个实例中
int i=123; object o=(object) i;
拆箱:从对象中提取值类型
o=123; i=(int) o;
泛型
【定义】
我们在编程的时候需要一个数据类型,但是在刚开始的时候还不确定这个数据类型是怎么样的,或者说对于不同的多个数据类型有相同的功能和相同的操作,又不想多次的写代码,就需要用到泛型,表示同一个操作针对不同的数据类型
【代码实现】
using System .Collections .Generic ; public partial class Form1:Form { IList <Animal>arrayAnimal; private void button3_Click(object sender,EventArgs e) { arrayAnimal =new List <Animal>(); arrayAnimal .Add (new Cat("小花")); MessageBox .Show (arrayAnimal .Count .ToString ()); } }
小结
对C#的面向对象基础的总结就算告一个段落了,以后还会再认识别的语言,到时再比较,然后加深理解。加油
相关文章推荐
- 【面向对象】这些基本概念,你都了解了吗(上)
- grid基础语法介绍(上) 《轴线与网格》里主要讲述了grid与flex中,网格与轴线的基本概念,了解了这些基本概念之后,我们可以更轻松地对布局方式进行研究,这一篇文章主要描述grid布局中,定义在容
- Java程序员面试宝典--面向对象的基本概念
- 面向对象的基本概念
- 面向对象的基本概念
- Oracle两个基本概念了解体系结构
- 面向对象的基本概念(一)
- UML学习笔记(二):复习面向对象的一些基本概念
- 第十八课 面向对象的基本概念(4)
- 第十八课 面向对象的基本概念(3)
- UML学习笔记(二):复习面向对象的一些基本概念
- 第二十一课 面向对象的基本概念(6)
- 学习SVG 之一 (了解矢量概念、SVG基本概念)
- 第十六课 面向对象的基本概念
- 第十七课 面向对象的基本概念(2)
- Java程序员面试宝典--面向对象的基本概念
- oracle体系结构必须先了解的两个基本的概念
- 很多人对反射、类型、装配件这些概念都还不了解!
- oracle体系结构必须先了解的两个基本的概念
- ITIL的基本概念了解