ホームページ  >  記事  >  バックエンド開発  >  C#の補足知識(4):継承

C#の補足知識(4):継承

黄舟
黄舟オリジナル
2017-02-07 15:17:081339ブラウズ

メソッドの書き換え:

基本クラスのメソッドは仮想キーワードを識別し、サブクラス (継承クラス) のメソッドの書き換えはオーバーライド キーワードを識別します。

オーバーライドされたメソッドは、メソッド名、戻り値、受け入れられるパラメーターなど、基本クラスと同じ型を持つ必要があります。

  public class Class1
    {
        public virtual void show(int i)
        {……}
    }
    public class Class2:Class1
    {
        public override void show(int a)
        {……}
    }

新しいメソッドの書き換え:

    public class Class1
    {
        protected virtual void show(int i)
        {……}
    }
    public class Class2:Class1
    {
        public new int show(int a)
        {……}
    }

新しいステートメントは、同じ名前の独自のメソッドを定義します。戻り値の型とアクセス型は、基本クラスの同じ名前のメソッドとは異なる場合があります。

受け入れられたパラメータが同じ名前の基本クラスのメソッドのパラメータと異なる場合、新しいキーワードは冗長になり、これは一般的な書き換えと同等になります (基本クラスは同じメソッドまたは同じ隠しメソッドを持ちません)。

override は基本クラスのメソッド (隠しメソッド) のメソッド本体を書き換え、new は同じ名前の基本クラスのメソッド (同じパラメーターを受け取る) を書き換えます。

相続の終了:

継承を終了します。次のコードはコンパイル エラーです。Class2 は閉じたクラス Class1 を継承できません

public sealed class Class1
    {
        public virtual void show(int i)
        {……}
    }
    //public class Class2:Class1
    //{
    //    public override void show(int a)
    //    {……}
    //}

基本クラス コンストラクターを呼び出します:

コンパイラーは最初に基本クラス コンストラクターを呼び出し、次に継承されたクラス コンストラクターを呼び出します。

  public class Class1
    {
        public Class1(int i , string j)
        {……}
    }
    public class Class2:Class1
    {
        public Class2(int i,string j,object obj):base(i,j)
        {……}
    }

以上が C# の豆知識 (4): 継承の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。