2012-03-12 9 views
0

私はこのようなインタフェースを持っている:インターフェイスまたはImplimentインターフェイスからの継承?

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

MYSERVICEクラスImpliment IServiceインターフェイスを。 私はIService

から

MYSERVICEクラス継承

が、それは間違っていると言うのか?

その間違った場合は、複数の継承のために、我々はこの定義を持っている理由:

多重継承は、クラスが複数のスーパークラスから動作と 機能を継承することができているいくつかのオブジェクト指向コンピュータ・プログラミング言語の機能です。多重継承をサポート

言語は:C++、(CLOSを介して)のCommon Lisp 、EuLisp(EuLisp対象システムテロスを介して)、カール、ディラン、 エッフェル、Logtalk、REXXオブジェクト、スカラ(ミックスインの使用を介して、しクラス)、 OCaml、Perl、Perl 6、Python、Tcl(インクリメンタルTcl経由)。 1

C#などのいくつかのオブジェクト指向言語は、Java、およびプロトコル、または「インターフェースは、」真の多重継承の機能の一部 を提供するがRubyは..、multiple inheritance

を 単一継承を実装

インタフェースは、複数の 継承を提供した場合...私はインターフェイスから継承言うことができる... ...

+0

はそれについて考えて行きます、それはインターフェースから何を継承しますか?インターフェイスに実装が定義されていません!彼らは単なる契約です。 –

+1

Baboon - あなたは契約を継承します。抽象メソッドのように。 –

+1

'C#'にも当てはまる同じ質問を 'C++ 'で聞いた人からの詳細な説明:http://stackoverflow.com/questions/3774204/difference-between-interface-inheritance-and-implementation-inheritance #answer-3774277 – xandercoded

答えて

5

クラスは、interfacesを実装しています。

クラスsealedではありません他のクラスを継承します。

インターフェイスは定義上実装されていないため、動作はになります。を継承します。他方では、クラスに実装があり、したがって区別が可能です。

0

はい - MYSERVICEがIService

+0

なぜですか?それには多くの相続財産があります。 –

+0

しかし、インターフェイス実装の "実装"という用語は広く受け入れられていて、 "継承"ではありませんか?用語としての "継承"は(少なくとも私の限られた知識では)インタフェース継承ではなくクラス継承に関連して使用されます。これら2つの抽象概念が明確に分離されているのではないか(インタフェース:has-A、継承:Is-A) – Alex

+0

@Alexインターフェイスは依然としてIs-A関係です。 MyClassがIServiceを実装する場合、IServiceを必要とするものはすべてMyClassを受け入れるため、MyClassがIServiceであると言うのは正確です。封じ込めは、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

私は自分自身への説明方法:

親 - 子クラスが関係を持っているので、それが継承です。子はすべての親機能を継承します。

インターフェイスは単なる契約にすぎません。子供はIServiceClassとよく似ているように見せかけますが、IServiceClassには何も持たないので機能のいずれも継承しません。従って実現する。

あなたが覚えておく必要があるものの一つに:)

しばらく前に愚かな面接の質問があった:「?何が抽象クラスの違いはインターフェースだが」...フィギュア

関連する問題