一直比较迷糊的问题:abstract与interface到底如何用,什么情况下用哪种?

大可山人
博客专家认证
2004-12-31 11:34:15
如题。
...全文
183 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
linguicheng 2005-01-02
  • 打赏
  • 举报
回复
一个接口定义一个协定。实现接口的类或结构必须遵守其协定
一个接口可从一个或多个基接口继承。在下例中,接口 IMyInterface 从两个基接口 IBase1 和 IBase2 继承:
interface IMyInterface: IBase1, IBase2
{
void MethodA();
void MethodB();
}
接口可以由类和结构实现。实现的接口的标识符出现在类的基列表中。例如:
class Class1: Iface1, Iface2
{
// class members
}
类的基列表同时包含基类和接口时,列表中首先出现的是基类。例如:
class ClassA: BaseClass, Iface1, Iface2
{
// class members
}
大可山人 2005-01-02
  • 打赏
  • 举报
回复
再顶一下
goodhy 2005-01-02
  • 打赏
  • 举报
回复
抽象类与接口类似,但是也于类共享很多特征。抽象类无法依靠自己完成实例化,它必须先被继承。
抽象类可以提供所有,一些或者不提供类的实际实现。与接口一样,它们可以指定必须在继承类中实现的成员。与接口不同的是,一个类只能从一个抽象类继承。与类相似,抽象类可以提供全部的实现
成员,与类不同的是,抽象类也可以指定必须由继承类实现的成员。
大可山人 2005-01-01
  • 打赏
  • 举报
回复
能否举点例子,感觉还是不太明白。
boulder 2004-12-31
  • 打赏
  • 举报
回复
up
Technologytomorrow 2004-12-31
  • 打赏
  • 举报
回复
abstract是抽象类,使专门供其他类继承的,自身不能实例化
interface是接口,只是申明了一些方法,但具体的实现还要靠继承他的类去完成
interface便于多重继承
大可山人 2004-12-31
  • 打赏
  • 举报
回复
是不是某些情况下,既可以使用abstract,也可以用interface?而如果需要多重继承时,只能使用interface?
SeeSunSet 2004-12-31
  • 打赏
  • 举报
回复
If all the methods of an abstract class are unimplemented in the base class, it is essentially the same as an interface, but with the restriction that you can’t make a class inherit from it as well as from another class hierarchy as you could with an interface.

这是原话。翻译得有问题。
他的本意应该是:
你不能创建一个类既从这个抽象类继承,又从其他类继承,(即:不能多重继承),但是用接口却可以(创建一个类,既从接口继承,又从其他类或接口继承)。
也就是说同一个类可以继承某类接着实现某个接口,但是它不能继承某个抽象类,再继承其他的类..

虽然抽象类在没有被实现方法的时候会看法像接口一样的功能.但是它们区别于此.

slhuang 2004-12-31
  • 打赏
  • 举报
回复
不久前,这样的问题从《COM本质论》里找到了答案。(只对于interface)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧