Не имеет отношения к вопросу (ответ Мехрдада должен помочь вам), и я надеюсь, что это не воспринимается как придирчивое: классы не наследуют интерфейсов, они реализуют их.
.NET не поддерживает множественное наследование, поэтому соблюдение условий может помочь в общении. Класс может наследовать от одного суперкласса и может реализовывать столько интерфейсов, сколько пожелает.
В ответ на комментарий Эрика ... У меня была дискуссия с другим разработчиком о том, должны ли интерфейсы «наследовать», «реализовывать», «требовать» или «переносить» интерфейсы с объявлением, например:
public interface ITwo : IOne
Технический ответ заключается в том, что ITwo
наследует IOne
по нескольким причинам:
- Интерфейсы никогда не имеют реализации, поэтому утверждают, что
ITwo
реализует IOne
совершенно неправильно
ITwo
наследует IOne
методы, если MethodOne()
существует в IOne
, то он также доступен из ITwo
. т.е.: ((ITwo)someObject).MethodOne())
является действительным, даже если ITwo
явно не содержит определения для MethodOne()
- ... потому что среда выполнения так говорит!
typeof(IOne).IsAssignableFrom(typeof(ITwo))
возвращает true
Мы наконец договорились, что интерфейсы поддерживают истинное / полное наследование. Отсутствующие функции наследования (такие как переопределения, абстрактные / виртуальные средства доступа и т. Д.) Отсутствуют в интерфейсах, а не в наследовании интерфейсов. Это все еще не делает концепцию простой или ясной, но она помогает понять, что на самом деле происходит под капотом в мире Эрика: -)