【笔记】抽象类和接口的区别
今天俺突发奇想,脑子里浮现出抽象类和接口这2个名词。其实这2个概念在很多玩C#的人脑子里都出现过。我当时入门的时候也好几次出现在我眼前,但一直没深刻理解这2个概念之间的区别。今天琢磨了半天,同时在CSDN上看了好几贴这样的提问帖,再去看了一遍《C#入门经典》,才基本搞明白了。
下面我总结一下他们两的区别和使用的场合,大概就一段话(挑主要的说):
抽象类告诉外界我有什么;接口描述我能做什么;抽象类只能派生一个子类。意思就是说只能有一个子类去实现抽象类中的虚方法。而接口可以被多个类去实现。假如某种方法只有一种实现方式,则可以用抽象类。否则,如果有多种实现方法则应该用接口。
还有很多他们之间的区别在网上很多都有说(比如抽象类中可以有具体方法的实现代码,而接口中不能包括具体实现代码等),在这里我就不copy过来了,可以google一下就行,tag是抽象类 基类 接口。
这有一段实例代码(小弟想出的用动物去描述),大家可以参考一下去配合理解他们之间的区别:
因为大致上所有的动物(包括人)吃东西都是用嘴的,所以这里用抽象类实现
abstract class 动物吃东西
{
void 吃东西(); \\方法
}
class 人吃东西:动物吃东西
{
void 吃东西()
{…… //实现的具体方法}
}
而动物的繁殖方法不是没一种都一样的
(小小色情一下),所以繁殖的方法用接口实现:
interface 动物繁殖
{
void 繁殖();
}
class 鱼:动物繁殖
{
void 繁殖()
{…… //鱼的繁殖方法}
}
class 人:动物繁殖
{
void 繁殖()
{…… //人的繁殖方法}
}
以上是我理解抽象类、基类、接口的一点心得,也算个学习的笔记。免得日后老的时候忘了,能回来这里看看。^_^
下面我总结一下他们两的区别和使用的场合,大概就一段话(挑主要的说):
抽象类告诉外界我有什么;接口描述我能做什么;抽象类只能派生一个子类。意思就是说只能有一个子类去实现抽象类中的虚方法。而接口可以被多个类去实现。假如某种方法只有一种实现方式,则可以用抽象类。否则,如果有多种实现方法则应该用接口。
还有很多他们之间的区别在网上很多都有说(比如抽象类中可以有具体方法的实现代码,而接口中不能包括具体实现代码等),在这里我就不copy过来了,可以google一下就行,tag是抽象类 基类 接口。
这有一段实例代码(小弟想出的用动物去描述),大家可以参考一下去配合理解他们之间的区别:
因为大致上所有的动物(包括人)吃东西都是用嘴的,所以这里用抽象类实现
abstract class 动物吃东西
{
void 吃东西(); \\方法
}
class 人吃东西:动物吃东西
{
void 吃东西()
{…… //实现的具体方法}
}
而动物的繁殖方法不是没一种都一样的
![](https://www.cnblogs.com/Emoticons/QQ/14.gif)
interface 动物繁殖
{
void 繁殖();
}
class 鱼:动物繁殖
{
void 繁殖()
{…… //鱼的繁殖方法}
}
class 人:动物繁殖
{
void 繁殖()
{…… //人的繁殖方法}
}
以上是我理解抽象类、基类、接口的一点心得,也算个学习的笔记。免得日后老的时候忘了,能回来这里看看。^_^
posted on 2008-06-25 17:13 Daniel_xuan 阅读(466) 评论(1) 编辑 收藏 举报