İstanbul'un en iyi web tasarım firması


C# ABSTRACT (Soyut Tipler)

Abstract classlar nesnesi türetilmeyip, classların ortak özelliklerini kendisinde toplar.  Önüne abstract yazarak soyutlaştırmış olup diğer classlara extend hakkı vermiş oluruz. Burada maksat aynı şeyleri her birini tekrar tekrar yazmamış olmak.
 
Abstract class, sadece başka class'lar kendisini extend etsin diye yaratılmıştır. Tek başlarına yaratılamaz ve kullanılamaz.
 
-  Abstract tipler  soyut bir tiptir.
-  Abstract sınıfların nesnelerini tanımlayamayız.
-  Abstract tipler base sınıf olma görevi görürler.
-  Abstract üyeler yalnızca abstract tipler içerisinde tanımlanabilirler.
 - Abstract üyeler kalıtılan sınıf içerisinde ezilmek zorundadırlar.  Çünkü base'de tanımlı bir iş mantıkları yoktur.
-  Abstract tipler içerisinde non-abstract üyeler bulunabilir.
-  Abstract metodlar private tanımlanmazlar, public veya protected olurlar.
 
 
Şimdi iki örnekle inceleyelim.
 

Örnek 1:

abstract class Class1

    {

       protected int _x = 10;

       protected int _y = 30;

      

       public abstract void DegeriBirArtir();  // Abstract metodların kod bloğu yoktur { Kodunu, türeyen sınıflar yazmak zorundadır. }

 

       public abstract int X { get; }

       public abstract int Y { get; }

    }

 

class Class2:Class1

    {

        public override void DegeriBirArtir()

        {

            _x++;

            _y++;

        }

 

        public override int X  

        {

            get

            {

                return _x + 10;

            }

        }

 

        public override int Y 

        {

            get

            {

                return _y + 10;

            }

        }

    }

 

static void Main(string[] args)

        {

            Class2 c = new Class2();

            c.DegeriBirArtir();

           Console.WriteLine("x = {0}, y = {1}", c.X, c.Y);

           // Class1 c = new Class1();   // HATA

        }

 

Örnek 2:

    abstract class Urun
    {
        int _urunId;
        string _ad;
        double _fiyat;
 
        public int UrunID
        {
            get { return _urunId; }
            set { _urunId = value; }
        }
 
        public string Ad
        {
            get { return _ad; }
            set { _ad = value; }
        }
 
        public double Fiyat
        {
            get { return _fiyat; }
            set { _fiyat = value; }
        }
 
        public abstract double KdvDahilFiyat { get; }
 
        public Urun(int urunId, string ad, double fiyat)
        {
            UrunID = urunId;
            Ad = ad;
            Fiyat = fiyat;
        }
 
        public abstract string BilgiVer();
 
    }
 
 
class Kitap:Urun
    {
        string _yazar;
    }
 
Yazan:  Özgür Özmen
E-mail: ozgurozmentr@gmail.com
Tarih: 11.11.2008