Aracılığıyla paylaş


abstract (C# Başvurusu)

abstract Değiştirici değiştirilmesini şey eksik veya tamamlanmamış bir uygulama olduğunu gösterir.Soyut değiştiricisi, sınıfları, yöntemleri, özellikleri, dizinleyiciler ve olayları ile kullanılabilir.Use abstract bir sınıf bir temel sınıf diğer sınıfların yalnızca olması amaçlanmıştır belirtmek için bir Sınıf bildirimindeki değiştiricisi.Soyut olarak işaretlenmiş ya da soyut bir sınıfta bulunan üyeler, soyut sınıfından türeyen sınıflar tarafından uygulanmalıdır.

Örnek

Bu örnekte, sınıfı Square uygulaması sağlamalıdır Area gelen türetildiğinden ShapesClass:

abstract class ShapesClass
{
    abstract public int Area();
}
class Square : ShapesClass
{
    int side = 0;

    public Square(int n)
    {
        side = n;
    }
    // Area method is required to avoid 
    // a compile-time error. 
    public override int Area()
    {
        return side * side;
    }

    static void Main() 
    {
        Square sq = new Square(12);
        Console.WriteLine("Area of the square = {0}", sq.Area());
    }

    interface I
    {
        void M();
    }
    abstract class C : I
    {
        public abstract void M();
    }

}
// Output: Area of the square = 144

Soyut sınıflar aşağıdaki özelliklere sahiptir:

  • Soyut bir sınıf örneği oluşturulamıyor.

  • Soyut bir sınıf Soyut yöntemler ve erişimcisi içerebilir.

  • Soyut bir sınıf ile değiştirmek mümkün değil sealed (C# Başvurusu) değiştirici zıt anlamlar iki modifers çünkü.sealed Değiştirici bir sınıf devralınmasını engeller ve abstract değiştirici miras için bir sınıf gerektirir.

  • Soyut bir sınıftan türetilmiş bir soyut olmayan sınıf devralınan tüm Soyut yöntemler ve erişimcileri gerçek uygulamaları eklemeniz gerekir.

Use abstract bildiriminde uygulama yöntem veya özellik içermediğini belirtmek için bir yöntem veya özellik değiştiricisi.

Soyut yöntemler aşağıdaki özelliklere sahiptir:

  • Soyut bir yöntemi dolaylı olarak sanal bir yöntemdir.

  • Soyut sınıfların soyut yöntem bildirimleri yalnızca kabul edilir.

  • Bir Özet yöntem bildirimi gerçek bir uygulama sağladığından, hiçbir yöntem gövdesi vardır; yöntem bildiriminde basitçe bir noktalı virgülle biten ve imza izleyen hiçbir küme ayraçları ({}) vardır.Örne?in:

    public abstract void MyMethod();
    

    Uygulama bir geçersiz kılma yöntemi tarafından sağlananoverride (C# Başvurusu), soyut olmayan sınıf üyesi olduğu.

  • Kullanmak için bir hata olduğunu statik veya sanal özet yöntem bildiriminde değiştiriciler.

Özet özellikleri bildirimi ve çağırma Sözdizimi farklılıkları haricinde Soyut yöntemler gibi davranır.

  • Kullanmak için bir hata olduğunu abstract değiştirici statik özellikte.

  • Soyut devralınmış özelliğini kullanan bir özellik bildirimi ekleyerek türetilmiş bir sınıfta kılınabilir geçersiz kılma değiştirici.

Soyut sınıflar hakkında daha fazla bilgi için bkz: Soyut ve Korumalı Sınıflar ve Sınıf Üyeleri (C# Programlama Kılavuzu).

Soyut bir sınıf tüm arabirim üyeleri bir uygulama sağlamanız gerekir.

Bir arabirimi uygulayan bir soyut sınıf Soyut yöntemler üzerine arabirim yöntemleri eşleyebilir.Örne?in:

interface I
{
    void M();
}
abstract class C : I
{
    public abstract void M();
}

Bu örnekte, sınıfı DerivedClass soyut bir sınıftan türetilmiş BaseClass.Soyut bir sınıf soyut bir yöntemi içeren AbstractMethodve iki soyut özelliklerini X ve Y.

abstract class BaseClass   // Abstract class
    {
        protected int _x = 100;
        protected int _y = 150;
        public abstract void AbstractMethod();   // Abstract method 
        public abstract int X    { get; }
        public abstract int Y    { get; }
    }

    class DerivedClass : BaseClass
    {
        public override void AbstractMethod()
        {
            _x++;
            _y++;
        }

        public override int X   // overriding property
        {
            get
            {
                return _x + 10;
            }
        }

        public override int Y   // overriding property
        {
            get
            {
                return _y + 10;
            }
        }

        static void Main()
        {
            DerivedClass o = new DerivedClass();
            o.AbstractMethod();
            Console.WriteLine("x = {0}, y = {1}", o.X, o.Y);
        }
    }
    // Output: x = 111, y = 161

Bu gibi bir ifade kullanarak soyut bir sınıf örneğini denerseniz, yukarıdaki örnekte:

BaseClass bc = new BaseClass();   // Error

Derleyici, 'BaseClass' soyut bir sınıf örneği oluşturulamıyor belirten bir hata iletisi alır.

C# dil belirtiminin

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.

Başvuru

Değiştiriciler (C# Başvurusu)

virtual (C# Başvurusu)

override (C# Başvurusu)

C# Anahtar Sözcükleri

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu