2012-03-12 5 views
0

У меня есть интерфейс вроде этого:Наследование интерфейса или интерфейса Impliment?

interface IService 
    { 
    .... 
    } 
    public class myservice:IService 
    { 
    ... 
    } 

MyService класса интерфейс Impliment IService; , если я скажу, что

MyService класс Наследовать от IService

это не так?

, если его неправильно, почему для нескольких наследуют мы имеем следующее определение:

Множественное наследование является особенностью некоторых объектно-ориентированных языков компьютерного программирования, в которых класс может наследовать поведение и особенности из более чем одного суперкласса ,

Языки, которые поддерживают множественное наследование включают: C++, Common Lisp (через CLOS), EuLisp (через объект системы EuLisp ТЭЛОС), Curl, Dylan, Eiffel, Logtalk, Object REXX, Scala (посредством использования Mixin классы), OCaml, Perl, Perl 6, Python и Tcl (через инкрементальный Tcl). 1

Некоторые объектно-ориентированные языки, такие как C#, Java, и Рубин осуществить одиночное наследование, хотя протоколы, или «интерфейсы» обеспечивают некоторую функциональности истинного множественного наследования ..multiple inheritance

Если интерфейс обеспечивает множественные наследства ... Я могу сказать, что наследование интерфейса ... ...

+0

Подумайте об этом , что бы это унаследовало от интерфейса? в интерфейсе не реализована реализация! Это просто контракты. –

+1

Бабуин - вы наследуете контракт. Как из абстрактных методов. –

+1

Более подробное объяснение от того, кто задал тот же вопрос в 'C++', который по-прежнему применяется к 'C#': http://stackoverflow.com/questions/3774204/difference-between-interface-inheritance-and-implementation-inheritance # answer-3774277 – xandercoded

ответ

5

классов внедрениеinterfaces.

Классы наследуют других классов, которые не являются sealed.

Интерфейсы по определению не имеют реализации, поэтому никакого поведения к inherit. С другой стороны, классы могут имеют реализации, таким образом, различие.

0

Да - это неправильно сказать, что MyService наследует от IService

+0

Почему? У этого есть много черт наследства. –

+0

Но не является ли общепринятый термин реализации интерфейса «реализует», а не «наследует»? «Наследует» как термин (по крайней мере, к моим ограниченным знаниям), используемым в отношении класса-наследования, а не для реализации интерфейса. Разве эти две абстракции четко не разделены (Interface: has-A, Inheritance: Is-A). – Alex

+0

@Alex Интерфейс по-прежнему является отношением Is-A. Если MyClass реализует IService, то можно сказать, что MyClass - это IService, потому что все, что ожидает IService, примет MyClass. Сдерживание - это отношение Has-A. –

0

Класс наследует от другого класса и реализует интерфейсы.

Но вы можете создать интерфейсы, которые наследуются от других интерфейсов:

interface IService 
{ 
    void SomeServiceMethod(); 
} 

interface IService2 : IService 
{ 
    void SomeServiceMethod2(); 
} 

В конечном счете, хотя, это класс, который всегда обеспечивает реализацию методов интерфейса.

0

Не совсем.Как говорит нам концепция интерфейса, если какой-либо класс хочет использовать конкретный интерфейс, тогда ему необходимо реализовать все эти методы, и да. Для этого оператора есть одно метро, ​​которое есть, если какой-либо конкретный класс не хочет реализовывать все методы интерфейса он может объявить свой класс абстрактным классом.

Так короче класс реализует интерфейс и

класс наследует свойства от других родительских классов. (пример в случае Явы)

interface IService 
    { 
     void Method1(); 
     void Method2(); 
    } 


class A implements IService{ 

void Method1(){ 

} 
void Method2(){ 

} 

} 

или

Abstract class B implements IService{ 
    void Method2(){ 

    } 
    } 
0

Как я объяснил себе:

родитель - ребенок классы имеют отношения, так что наследование. child наследует все родительские функции.

интерфейс, однако, это просто контракт: ребенок притворяется похожим на IServiceClass, но не наследует никакой функциональности, потому что IServiceClass не имеет. поэтому реализует.

Одна из тех вещей, которые вы должны помнить :)

Некоторое время назад был глупый вопрос интервью: «В чем разница между абстрактным классом интерфейс» ... идти фигура

Смежные вопросы