您的位置:首页 > 其它

【面向对象】这些基本概念,你都了解了吗(下)

2017-05-14 21:13 337 查看
零碎知识点杂乱,所以先放个思维导图当向导:



抽象类与接口



抽象类

【定义】

类按用途可分为两类,一类是用来描述对象的,另一类就是抽象类。关键字是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#的面向对象基础的总结就算告一个段落了,以后还会再认识别的语言,到时再比较,然后加深理解。加油
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: