Abstract Class

Soyutlama, sadece girdi ve çıktıya bakıp içeride dönen işlemlerin gizlenmesi olarak açıklanabilir.

abstract class tan object üretilmez.

    class Shape {
        public int Width { get; set; }
        public int Height { get; set; }
        public Shape(int w, int h)
        {
            this.Width = w;
            this.Height = h;
        }

        public int AlanHesapla(){
            return this.Width * this.Height;
        }

        public virtual void Draw () {
            Console.WriteLine("Şekil çiz");
        }
    }

    class Square:Shape {

        public Square(int w, int h):base(w,h)
        {
            
        }
        public override void Draw () {
            Console.WriteLine("Kare çiz");
        }
    }

    class Rectangle:Shape {
        public Rectangle(int w, int h):base(w,h)
        {
            
        }
        public override void Draw () {
            Console.WriteLine("Dikdörtgen çiz");
        }
    }

    class Program
    {

        static void Main(string[] args)
        {
            var shapes = new Shape[3];
            
            shapes[0] = new Square(15,15);
            shapes[1] = new Rectangle(20,25);
            shapes[2] = new Rectangle(3,5);

            foreach (var shape in shapes){
                shape.Draw();
                Console.WriteLine($"Alan: {shape.AlanHesapla()}");
            }
        }
    }
    
/*
Çıktısı

Kare çiz
Alan: 225
Dikdörtgen çiz
Alan: 500
Dikdörtgen çiz
Alan: 15
*/

Last updated