このセクションにはコンテンツが多く、ビデオ ファイルは 4M を超えているため、ダウンロードに少し時間がかかる場合があります。
このセクションにはコンテンツがたくさんあるため、
しばらくお待ちください。継承だけについては、これまでの内容をすべて使用したので、このセクションのいくつかの内容を 2 ~ 3 回繰り返して説明する機会を利用します。これが最も重要なことです。 !このセクションのレビュー内容がよくわからない場合は、前の関連する章を読んでください。 !
次に、継承について説明します。継承を理解するには、まず、なぜ継承が必要なのかを知る必要があります。
ニュース システム用に作成したクラスに、データベースへの接続、初期化、クエリ、追加、削除、変更などの機能がすでに備わっているとします。 .!
次に、必ず別のクエリや変更などを行う必要があります。たとえば、ニュース列とユーザー管理はどちらも前に述べたクラスを使用する必要がありますが、違いは、異なる結果が必要であるということです。何をするか? 2 つの方法があります。1 つは、それらのクラスを個別に作成し、データベース接続クラスを 2 回コピーすることです。これにより、データベース クラスのメンバーを頻繁に呼び出すこともできます。このようなことが起こると、コードが非常に肥大化してしまわないでしょうか?なぜ減量薬がこれほど人気があるのか知っていますか?
落ち込んでいます、どうすればいいですか?簡単ですが、継承を使用してそれを完了します。継承について簡単に説明します。それは、サブクラス (派生クラス) が親クラス (基本クラス) のすべての特性を持ち、同時に独自の特性を持つことです。これで明らかになるはずだと思います!
注: .Net の継承では、別のクラスからの直接の継承のみが許可され、複数のクラスを同時に継承することはできません。父親は 1 人だけであるようです (実際、これは絶対ではありません。笑、Microsoft について考えるのは非常に興味深いです)。インターフェイスを使用して多重継承を実装することはできますが、たとえば、父親と祖父を最上位に、息子と孫を最下位に持つことも可能です。
直感的なものを見てみましょう。
上の図を見ると、下位レベルの方がより具体的であることがわかります。すると、人間がすべてのクラスの基底クラス(親クラス)であり、以下が派生クラス(サブクラス)であることがわかります。実際、次のサブカテゴリは下に拡張できます。
C# では、派生クラスはその直接の基本クラスからメンバー (メソッド、フィールド、プロパティ、イベント、インデックス インジケーター) を継承します。派生クラスは、コンストラクターとデストラクターを除く直接の基本クラスのすべてのメンバーを暗黙的に継承します。
2. C# での継承は次の規則に従います。
(これは私による要約ではありません。オンラインでアクセスして他の人からコピーしたものです。笑!!)
1. 継承は推移的です。 C が B から派生し、B が A から派生した場合、C は B で宣言されたメンバーを継承するだけでなく、A のメンバーも継承します。 Object クラスは、すべてのクラスの基本クラスとして機能します。
2. 派生クラスは基本クラスの拡張である必要があります。派生クラスは新しいメンバーを追加できますが、継承されたメンバーの定義を削除することはできません。
3. コンストラクタおよびデストラクタは継承できません。さらに、他のメンバーは、それらに定義されているアクセス方法に関係なく継承できます。基本クラスでメンバーにアクセスする方法によっては、派生クラスがメンバーにアクセスできるかどうかのみが決まります。
4. 派生クラスが継承されたメンバーと同じ名前の新しいメンバーを定義した場合、継承されたメンバーを上書きできます。ただし、これは派生クラスがこれらのメンバーを削除したことを意味するのではなく、単にこれらのメンバーにアクセスできなくなっただけです。 (属性またはメソッドの名前が同じでシグネチャが異なる場合、それは上書きではなくオーバーロードであることに注意してください。)
5. クラスは、仮想メソッド、仮想属性、仮想インデックス インジケーターとその派生を定義できます。クラスはこれらのメンバーをオーバーロードできるため、実装クラスは多態性を示すことができます。
6. 派生クラスは 1 つのクラスからのみ継承できますが、インターフェイスを介して複数の継承を実現できます。
サブクラスでは、base キーワードを使用して基本クラスのメンバーにアクセスできます。つまり、
他のメソッドによってオーバーライドされた基本クラスのメソッドを呼び出します。
派生クラスのインスタンスを作成するときに呼び出す必要がある基本クラスのコンストラクターを指定します。
基本クラスへのアクセスは、コンストラクター、インスタンス メソッド、またはインスタンス プロパティ アクセサーでのみ可能です。
静的メソッドから Base キーワードを使用するとエラーになります。
アクセス修飾子の再確認
アクセス修飾子は、宣言されたメンバーまたは型のアクセス可能性を指定するキーワードです。クラス継承には、public、protected、internal、private の 4 つのアクセス修飾子があります。これらのアクセス修飾子を使用して、パブリック、保護、内部、内部、保護、プライベートの 5 つのアクセシビリティ レベルを指定します。
宣言されたアクセシビリティの意味
一般のアクセスは無制限です。
保護されたアクセスは、包含クラス、または包含クラスから派生した型に制限されます。
内部アクセスは現在のプロジェクトに制限されています。
protected external アクセスは、現在の項目または包含クラスから派生した型に制限されます。
プライベート アクセスは、包含型に制限されます。
以下の例を見てみましょう。
すべてのコードのコメントを参照してください。