学習のC# - 抽象クラス

このクラスはインスタンス化することはできませんが、サブクラス定義されたクラスのメンバ関数をオーバーライドする必要があります。

使用する場合は、抽象と仮想メンバ関数の違いに注意を払います:

1.仮想関数または上書きをカバーしてもしなくてもよい、機能は、実際に関数を定義しています。

abstract class FourLeggedAnimal
    {
        public virtual string Describe()
        {
            return "Not much is known about this four legged animal!";
        }
    }

class Dog : FourLeggedAnimal
    {

    }

若しくは

abstract class FourLeggedAnimal
{
    public virtual string Describe()
    {
        return "This animal has four legs.";
    }
}


class Dog : FourLeggedAnimal
{
    public override string Describe()
    {
        string result = base.Describe();
        result += " In fact, it's a dog!";
        return result;
    }
}

2.抽象関数は、単にインスタンス化された機能インタフェース、本当の機能は、サブクラスで再実装しなければならない規定します。

abstract class FourLeggedAnimal
    {
        public abstract string Describe();
    }


class Dog : FourLeggedAnimal
    {

        public override string Describe()
        {
            return "I'm a dog!";
        }
    }

class Cat : FourLeggedAnimal
    {
        public override string Describe()
        {
            return "I'm a cat!";
        }
    }
 

ます。https://my.oschina.net/u/63375/blog/3057269で再現

おすすめ

転載: blog.csdn.net/weixin_34311757/article/details/91918989