.NETのコアCSHARP主要記事1-6クラス継承とポリモーフィズム

.NETのコアCSHARP主要記事1-6

このセクションでは、クラスの継承やポリモーフィズムが含まれています

簡単な紹介

継承とポリモーフィズム - 最後に、我々は中にオブジェクト指向機能の三つの特徴の2について話しました。継承とポリモーフィズムによって、我々は極端に拡大するのは非常に良いクラスすることができます。次のセクションで説明し、我々は、継承し、さまざまな側面から行わ多型解析するために滑走しています。

受け継ぎます

、Bクラス継承クラスBを表し:継承は、実際に使用してC#の継承で実装文法の非常によく理解し、あります サブクラスは(派生クラスと呼ばれる)(基底クラスと呼ばれる)親クラスから継承されたすべての子供たちよりも父が好き継承しますが、子供たちは、常に自分自身の個性を持っていますが、私の子供たちを教えていない、いくつかの父親があります。我々は以前の訪問からケース制御文字のこの部分を理解していれば、あなたはこの「調和のとれた、」父と息子の関係を記述することができます。

次の例を考えてみましょう:セバスチャンAikui Siの(親)は、高貴なヨーロッパの宮廷で、67歳で、彼は子爵だった、と恐ろしい秘密は誰にも言うことができないマスターし、だけで腐敗します胃。彼は家族がお金を必要なときに、彼は彼の息子がお金を引き出すためにATM機に銀行のカードを取る聞かせセバスチャンAikui Siの虚弱、以来、マイクYikuiのSiという名前の息子を持っています。まったく同じ息子の車と彼の車、そのように駆動家政婦はそれを明確にする必要があり、それぞれの息子:「私は私の父の車を運転したい。」、または:「今日は、私は自分の車を運転します」彼は言わなかった場合は、車の外に家政婦の息子をデフォルトそれまでに。彼の家族は大アイドル団地は、息子たちが開発する自由である限り、父親の同意など、開発に使用することができてきました。

この例では、その結論に来る必要があります。

  • セバスチャンAikui Siの(親)が生まれていない場合は、マイクYikui Siの(サブクラス)は存在しません。(サブクラスがインスタンス化されるときは、最初に親クラスのコンストラクタを呼び出す必要があります)
  • セバスチャンYikui Siの(親)のために、彼の名前は(パブリック)を知ることができます誰に属している、誰でも簡単に得ることができます。しかし、私は名前を持っているしたいのですが、それだけで彼の家族の才能があることができます(継承した後、親クラスのフィールドを取得する)ことができます。
  • それのためにお金を引き出すためにATMマシンに移動し、撤退のパスワードは、他の人が取得することはできません、彼の息子に語ったことができます。(サブクラスによってアクセスすることができる保護されたが、残りの部分にはアクセスできません)
  • セバスチャンYikui Siの(親)は秘密を知って、この才能の秘密は彼だけでは(サブクラスがプライベート取得することはできません)(プライベート)、彼の息子を含むことは知りませんでした知っています
  • 父と息子はまったく同じ車が、車は特別な注意取る必要があるため(サブクラスと親の署名を同じ機能、親クラスの機能は、デフォルトでは非表示にされたときに明示的に指示しない限り)
  • ハシエンダは父ですが、息子は(親クラスの関数をオーバーライドすることができ、仮想、サブクラスとして親クラスの機能を指定する)変換撮影することができます

いくつかは、この分析を通じて掘る、私はあなたが7回のまたは8明確な連続が意味する持っているべきだと思います。これは、サブクラスのメソッドが親クラスを呼び出すには、ベースキーワードが反映され、私たちの基本キーワードを導入すべきです。

特に、あなたは、C#は、あなたが多重継承を達成しようとしているならば、あなたはメディアや橋などのインターフェースを使用することができ、クラスとクラスの継承のためにのみ単一継承をサポートしていることに注意すべきです。

コードの一部は、私たちの継承を示して私たちは今、私たちのチュートリアルでは、より多くのではなく独立した思考、同じコースのうち迅速として、あなたのいくつかをさせるよりも、考えることをご案内することで、終了します。

class Father
{
    public Father()
    {
        Console.WriteLine("Father Method");
    }
    private string MSGSecret;
    protected string BankSecret;
    public string Name;
    public string Car;
    protected void test()
    {

    }
}
class Son:Father
{
    public Son()
    {
        Console.WriteLine("Son Method");
    }
    //隐式的生成了这三个字段
    //protected string BankSecret;
    //public string Name;
    //public string Car;
    public string Car;
    public void getCar()
    {
        base.Car;//父类
        this.Car;//子类
        base.test()//调用父类方法,如果签名不冲突,可以省略base
    }
}
Son s = new Son();//思考一下这里会输出什么?

ポリモーフィズム

多型は、難しいことではありません継承し、我々はインターフェイスを書き換えについて話しました、実際に多型のタイプです。前に、私たちは単に多型を示すために例を挙げ:鯉人間は動物であるが、人々は、肺で呼吸する、えらや鯉と呼吸します。この例では、多型にも反映しています。それを説明するには、次のコードを使用します。

class Animal
{
    //通过抽象方法实现多态
    abstract void Breathing();
    //虚方法实现多态
    virtual void Eat()
    {
    }
}
class Human:Animal
{
    override void Breathing()
    {

    }
    override void Eat()
    {

    }
}
class Fish:Animal
{
    override void Breathing()
    {
        
    }
    new void Eat()
    {

    }
}
Animal ah = new Human();
Animal af = new Fish();
Fish f = new Fish();

ああ、最後の数行に注意し、そして各々は、ヒトおよび魚AFオブジェクトに属しているが、場合メソッド呼び出し、親クラスを呼び出し、そして負荷をオーバーライドとサブクラスを達成するための統一されたアプローチ。

ah.Eat();//调用父类的Eat(),但是以Human类中的重写方法为实现
af.Eat();
f.Eat();

これら三つの違いは何ですか?実際には、あなただけ知っている必要があり、多型は、サブクラスは親クラスの仕様に準拠するよう、サブカテゴリーを管理するために、親クラスを介して行われます。サブクラスは、親クラスから継承する場合の方法は、親クラスのメソッドを呼び出すことですが、それは、サブクラスを実装する場合。あなたがこの方法で新しい修飾子を使用する場合は特に、この方法は、単語の意味として、これは新しい関数の機能ではなく、親クラスで、何の関係や親を持ちません。今、あなたは、各クラスのメソッドが3つの関数呼び出しの上にあるものを分析しようとすることができます。

ポリモーフィック最大のビットを使用して、またはインタフェースのサブクラスのために自分のすべての機能を継承する基本クラスを介して管理することができるということで、同じ機能を達成するための様々な方法を持つことができます。

あなたがポリモーフィズムメソッドの実装を実装するためのインタフェースと抽象クラスを使用している場合、それは同じですが、インスタンス化できない基本型があります。

Githubの

嗶哩嗶哩ホーム

WarrenRyanのブログ

ブログパーク

おすすめ

転載: www.cnblogs.com/WarrenRyan/p/11241566.html