积极答复者
抽象类,抽象方法,虚方法,接口,四者之间的区别及用法,作用

问题
答案
-
基类中不需要实现的,可以使用抽象类。这个和使用Virtual区别不大。区别较大的是接口。
一个重要原因就是一个类只能从一个类继承,但是可以实现多个接口。
有些场合是需要先定义好接口,然后调用端和被调用端可以分别实现。基础类库中就有一些用法,例如
List<T>.Sort Method (IComparer<T>) 定义为:
publicvoid Sort( IComparer<T> comparer )
这样使用者可以实现任何方式的比较器,Sort函数都可以调用它们。
还有foreach, 只有实现了System.Collections.IEnumerable or System.Collections.Generic.IEnumerable<T>的类才能被foreach遍历。
这些都是使用接口的典型场景。- 已标记为答案 CaillenModerator 2016年2月16日 1:51
-
你好 panhuatu,
使用虚函数有一些限制如下:
1.虚函数仅适用于有继承关系的类对象, 所以只有类的成员函数才能说明为虚函数.
2.静态成员函数不能是虚函数.
3.内联函数不能是虚函数.
4构造函数不能是虚函数.
5.析构函数可以是虚函数. 简单点说,抽象方法是需要子类去实现的.虚方法,是已经实现了,子类可以去覆盖,也可以不覆盖取决于需求.
为什么要抽象类,可以参考下面的连接
http://www.cnblogs.com/anrainie/archive/2012/03/28/2420738.html
关于接口的作用可以参考一下链接
http://www.cnblogs.com/lynnlin/archive/2008/06/25/1229928.html
Best regards,
Cole Wu
- 已标记为答案 CaillenModerator 2016年2月16日 1:51
全部回复
-
基类中不需要实现的,可以使用抽象类。这个和使用Virtual区别不大。区别较大的是接口。
一个重要原因就是一个类只能从一个类继承,但是可以实现多个接口。
有些场合是需要先定义好接口,然后调用端和被调用端可以分别实现。基础类库中就有一些用法,例如
List<T>.Sort Method (IComparer<T>) 定义为:
publicvoid Sort( IComparer<T> comparer )
这样使用者可以实现任何方式的比较器,Sort函数都可以调用它们。
还有foreach, 只有实现了System.Collections.IEnumerable or System.Collections.Generic.IEnumerable<T>的类才能被foreach遍历。
这些都是使用接口的典型场景。- 已标记为答案 CaillenModerator 2016年2月16日 1:51
-
你好 panhuatu,
使用虚函数有一些限制如下:
1.虚函数仅适用于有继承关系的类对象, 所以只有类的成员函数才能说明为虚函数.
2.静态成员函数不能是虚函数.
3.内联函数不能是虚函数.
4构造函数不能是虚函数.
5.析构函数可以是虚函数. 简单点说,抽象方法是需要子类去实现的.虚方法,是已经实现了,子类可以去覆盖,也可以不覆盖取决于需求.
为什么要抽象类,可以参考下面的连接
http://www.cnblogs.com/anrainie/archive/2012/03/28/2420738.html
关于接口的作用可以参考一下链接
http://www.cnblogs.com/lynnlin/archive/2008/06/25/1229928.html
Best regards,
Cole Wu
- 已标记为答案 CaillenModerator 2016年2月16日 1:51