C#のオブジェクト指向の概念----継承やポリモーフィズム分析使用して

引き継ぎ

1.継承の概念:現実の生活からの継承は、私たちの生活は、主に財産を継承していることを理解することが、我々のプログラムの継承、主にコード(プロパティ、メソッド)

2.継承の意味:Windowsフォームのプログラムを作成することによって、二つの形式、フォームから継承された街を観察します。これは、コードの再利用に私たちを助けます。

3.要件と継承の特性:継承は推移です。A ---> B ---> BおよびCに関連付けられているCAプロパティおよびメソッド つまり、Cは彼の次のレベルに配信されるコンテンツの継承を、できるようになります。

  要件:多くの層がありますが、継承が、継承は、単一のルートを持っています!換言すれば、クラスAがBから継承することができるが、Aが同時にCを継承することができない.... C ++多重継承が許可されているが、C#やJavaで許可されていません。

同時に複数のインタフェースを実装しながら、クラスは、親クラスから継承することができます。

4.継承の基本的な使用:

[1]私たちは、特定のクラスを分析するときは、これらのクラスの間を通過するためのプロパティとメソッドを持っている場合、我々は相続が、継承の使用を考慮することができ、特別な注意を払って、私たちは、クラス間の継承関係を持っていますそれは「似ています。」でなければなりません

特別な注意:私たちの親クラスのメンバーサブクラスによっては、公共の種類によって使用することができますが、プライベートなダイレクトを使用することはできません。

[2]の使用:非常にシンプル、かつほとんど継承関係。

経験1:実際の開発では、私たち自身の継承の使用は、通常は、3つの以上の層を、あまりにも複雑な継承を取得していません。

経験2:あなたはあまりにも多くの相続、連続またはそれ以上の層を使用する場合は、我々はいくつかのコードを記述する場合は問題がある場合には、ポストを取り除く、他のすべてのサブカテゴリーが影響を受けます。

実装の継承とポリモーフィズム

[1]親クラスを定義します

クラスの父

{

   //パブリックプロパティ

   //パブリックメソッド

   //プライベートメソッド(親のみ独自に使用)

   //保護されたプロパティ、メソッド(のみ内部サブクラス)

   //親クラスにも重要な役割があります。未完成の振る舞い(メソッド)を作ることができ、親クラスであり、その後、子クラスを実装することができます!そして、サブクラスが達成してみましょう、これは我々が言いたい抽象メソッドです!

}

覚えておいてください:抽象クラス抽象メソッドは、中に入れておく必要があります。しかし、抽象クラス、任意の方法は、抽象には含まれないことがあります。

 

抽象メソッド:すなわち、親クラスの仕様要件の挙動は、特定の実装サブクラス完了(これは必須)があります

仮想メソッド:その親は、このメソッドを実装する必要がありますが、サブクラスはまた、(リライト)(必須ではありません)を書き換えることができます

[2]サブクラスを定義します

抽象メソッドがある場合、サブクラスは親クラスを継承するサブクラスも抽象クラスでない限り、サブクラスは、抽象メソッドをオーバーライドする必要があります。

使用の仮想メソッドについて:

サブクラスは、サブクラスが直接完全に仮想メソッドではないかもしれないコンテンツを使用して、コンテンツを完全に仮想メソッドを使用することができます。コンテンツ仮想メソッドを使用することを続けながらもちろん、彼らはまた、自分自身を達成することができます。

結論を試運転することにより:

抽象メソッドは、サブクラスがメソッドが呼び出されるオーバーライドする、と呼ばれることはほとんどありません。場合は、親仮想メソッドは、サブクラスが書き換えられているかどうかに応じて、呼び出され、コールかどうかです。

[3]多型:我々は、実装を気にしないことがあり、発信者多型メカニズムを使用する場合、オブジェクト指向プログラミング言語のプログラム特性は、によって特徴づけられます。我々は行為を呼びたい、想像しますが、この動作は、多くの症状を有していてもよく、およびプログラムを書くとき、具体的に動作する方法を、私たちが知ることができません。彼らは、この動作は、仮想マシン自体に固有のものであることを確認することができ、実行プログラムのみ。

ポリモーフィックな性質:タイプ、行動の多様性を達成します。

ポリモーフィックは、私たちに語った:抽象指向プログラミング、プログラムはあなたが大幅に強化拡張することができます。

特別な注意:多形挙動は、親クラスの抽象メソッドまたは仮想メソッドにのみ制限されます!

多型実装:抽象スーパー仮想メソッドまたはメソッドを定義する、異なるサブクラスは、それぞれ仮想または抽象メソッドとすることができるメソッドをオーバーライドします。

6.インタフェースとポリモーフィズム

多型が表示されます。生まれて展開するには!

実現多型:継承によって、インターフェースもできます

多型方法:継承--->値のタイプの方法として、親クラスタイプを返し(実際には特定のサブクラスオブジェクトを返します)

                      パラメータタイプとして親クラス・タイプ(オブジェクトの実際の転送は具体的なサブクラスです)

              メソッドの戻り値としてインターフェース--->インターフェイスタイプ(実際にはクラスオブジェクトのインタフェースを返します)

                      パラメータタイプとしてインターフェイスタイプ(実際に渡されるインターフェースです)

インタフェースの概念

工業用途:USBインターフェイス(シリアル、Ethernetポート...)

インタフェース:標準、仕様です。USBコネクター:4線(5V電源、GND、send.recive)

プログラム・インタフェースについては、次の2つの側面が由来。

(1)私たちはソフトウェアを開発する場合、それは非常に多くの場合、我々はすぐに検討する必要がないオブジェクトを後に設計することができる、または私たちは特定のオブジェクトを作成する方法を知らないかもしれない、私たちは知っているこのオブジェクトの振る舞い(も彼が知っていた)がその社会ですが、私はそれが乾燥しているかわかりません。

ようなプロジェクトとして(2)私たちはチームを開発し、10人のチームで行われ、10個のモジュールを設計しました。どのようにそれぞれがそれの単語であることをしますか?

以上を踏まえ、我々は解決するためのインターフェースを使用することができます

まず、我々は、オブジェクトを設計、直接インタフェースの動作に応じて設計することができる(インタフェースは唯一の方法は、特別な実装を提供していません)。

第二に、我々は、関連するモジュールを置くことができ、開発が完了した後、これらのモジュール、プロジェクトが自動的に生成されます、異なるモジュールを実現するためのインタフェースに抽象化、およびインタフェースが直接相互に協力し、最終的に異なるグループの開発しています。

私たちは、常に注意を払う、親は、一般的に、我々は抽象の一部を置くことができるように拡張されたバックが、これらは自動的に、サブクラスに継続することを、行動のいくつかのサブカテゴリーに共通の振る舞いを入れ、すべての親クラスを置くことができませんインタフェースのため。誰がインタフェースを実装し、そのような行動を、持っています。統一協会。

言い換えれば:インタフェースは行動規範に焦点を当てて、継承の再利用コードが着目しました!

(1)インタフェースの状態:私はそれが書かれたパブリックを必要としない、インターフェイスのメソッドが実装されていない、で始まる必要があります。

(2)抽象インタフェース・メソッド、抽象的性質であってもよいです。キーワード:インタフェース

(3)インタフェースが特長:インターフェースがあること、必須であり、クラスがインタフェースを実装し、それはインターフェースのすべてのメソッドを実装する必要があります!そして、メソッドのシグネチャを変更することはできません。

プログラムの詳細については:私たちは、このオブジェクトがどのようなプロパティ、メソッド、プロパティ、および私たちが使用できる方法があることは一般的なオブジェクトで使用していること。

抽象指向プログラミング:私たちは、この抽象(抽象メソッドと行動)の行動について懸念していることを具体的に達成するためにどのように、私たちは気にしないでください。

詳細については、抽象指向プログラミングおよびプログラミングの違い:詳細は達成されなかった場合、あなたは、単に呼び出し側に提供することはできません、達成されなければなりません。抽象指向プログラミングが異なっている。しかし、抽象的には、私たちはより良い、その規定を実施するために行動しなければならないことが必要です。優しい言葉の、呼び出し側は何を使用することができます。

抽象オブジェクト指向プログラミング:最初の拡張。第二に、チーム開発が必要です。

抽象クラスとインタフェースとの間の差

1.インタフェースは、直接インタフェースを使用し、機能をパッケージに焦点を当て、抽象クラスの焦点は、コードの再利用で、両方がポリモーフィズムを実現することができますが、しかし、内容が継承されるようにされていない場合、我々は、拡張子にあります。でも、コンテンツだけでなく、親クラスで継承され、通常は公開コンテンツ場合は、インターフェイスに、多形性行動を必要としています。

2.インターフェースより簡潔で使いやすいです。フレームの設計では、代わりに抽象クラスで、抽象インタフェースとなるであろう。

リヒター置換原則:多型の基本的な原理によれば。

 

システム・インタフェースを使用します

インタフェースカテゴリ:[1]カスタムインターフェイス、自分のインタフェースを記述するために私たちのプロジェクト開発の実際のニーズに応じました。

          [2]システムインタフェースは、.NETプラットフォームは良いパッケージを持って、私たちが直接に使用することができます。共通のシステム・インタフェース:のIList <T>、ICompare <T>

 

おすすめ

転載: www.cnblogs.com/LiyuLi/p/12214644.html