零碎知识点杂乱,所以先放个思维导图当向导:
抽象类与接口
抽象类
【定义】
类按用途可分为两类,一类是用来描述对象的,另一类就是抽象类。关键字是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#的面向对象基础的总结就算告一个段落了,以后还会再认识别的语言,到时再比较,然后加深理解。加油