您的位置:首页 > 其它

Interface and Abstract Class

2016-03-02 16:32 239 查看
这个话题是C#开发面试题必问的一道经典题目,接下来谈一谈我自己的理解

1.接口(Interface)就像是一个本书的目录,一眼就能看出这本书有哪些章节,规定好这本书要阐述的大概意思,而具体内容要到各个章节分别去看,并且如果你要发布这本书就必须把每个章节的内容都写完,当然你也可以删除某些章节

特点:

a.接口中只能包含方法声明,只能通过子类继承之后重写后使用

b.子类继承接口之后,需要实现所有接口中未实现的方法。

b.接口不能被实例化,接口中不能包含常量,字段,构造函数,析构函数,静态成员

d.接口支持多继承,回调

e.接口可以作用于值类型和引用类型

2.抽象类(Abstract Class)就像是一个模型,不管你要做什么都要先套用(Inhert)这个模型(基类),这个模型的具体结构使用的时候再具体实现,当然也可以有具体实现的部分结构,举个例子:如果你有一个飞机的抽象类,那这个抽象类里面可以有机身,轮子,机翼,座位,地毯等属性,当你要造一架战斗机的时候,可能抽象类厘原本定义的机身长度是客机的,那么需要重新定义(override)成战斗机的机身长度,地毯都可以用那就直接使用。

特点:

a.抽象类中声明的抽象方法,不包含实现,可以看作虚方法,也可以存在已实现的方法,如果该方法声明为virtual,则可以选择在子类中重写(override)该方法或不重写

b.抽象类不能被实例化,只是把抽象类的指针指向子类,从而实例化子类,且该子类可以使用抽象类中的构造函数

c.子类继承抽象类,就必须实现其父类中的所有抽象方法

d.抽象类不支持多继承,回调

e.抽象类只能作用于引用类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: