C# 子对象是否实现父类接口?

C# 子对象是否实现父类接口?,c#,object,interface,C#,Object,Interface,以前可能有人问过这个问题,但我找不到满意的答案: 我有一个名为IRepository的接口,它定义了许多通用方法,例如Find() 我有一个名为RepositoryBase的抽象类,它实现了这个接口,提供了这些方法的通用版本 然后我有一系列从这个对象继承的对象,比如PersonRepository 我的问题是: PersonRepository是IRepository类型的对象吗? 或者换言之,这段代码会起作用吗 IRepository repo = new PersonRepository()

以前可能有人问过这个问题,但我找不到满意的答案:

我有一个名为
IRepository
的接口,它定义了许多通用方法,例如
Find()

我有一个名为
RepositoryBase
的抽象类,它实现了这个接口,提供了这些方法的通用版本

然后我有一系列从这个对象继承的对象,比如
PersonRepository

我的问题是:

PersonRepository是IRepository类型的对象吗?

或者换言之,这段代码会起作用吗

IRepository repo = new PersonRepository();

由于,
PersonRepository
继承自
RepositoryBase
,后者是实现
IRepository
的抽象类,因此
PersonRepository
的实例也实现了
IRepository

是。继承是一个单路径链。子类可以覆盖父类的功能,或者用自己的功能隐藏它,但不允许它们“取消”它

你试过了吗?(剧透-答案是“是”)只是出于好奇。。。当你尝试编译器时,它做了什么?为什么不尝试一下并找出答案?@StevenWood这不是一个更好的观点。它是OOP的关键租户之一。如果你不屑于简单地尝试一下,那么对这个主题进行任何基本的研究都足以找到答案。@StevenWood-事实上,这是他的观点。我倾向于帮助别人,但向SO发帖的部分礼仪是询问者应该自己做一些基础研究。你可以自己检查一下,这很简单——很多工具都是免费的,或者如果你不想下载一些东西,甚至还有在线snippit跑步者。请记住,SO的一半目的是建立有用问题和答案的数据库。antiduh和amitJokis的答案都很好,但由于AmitJoki先回答了,我会接受他的答案。谢谢你的回答。