Абстрактний клас

1. Клас від якого не можна створити екземпляр (об'єкт)

2. Приховує деталі залишаючи лише важливу інформацію 

3. Абстрактні методи мають обов'язково реалізовуватися в нащадках

4. Абстрактний клас може містити реалізовані методи

5. Якщо хоч один метод є абстрактним то і класу треба дописати abstract 

6. Порівняння з інтерфейсом

        abstract class Figure

        {

            public abstract float Perimeter();

            public abstract float Area();

        }

        class Rectangle : Figure

        {

            public float Width { get; set; }

            public float Height { get; set; }

            public Rectangle(float width, float height)

            {

                this.Width = width;

                this.Height = height;

            }

            // забов'язані релізувати

            public override float Perimeter()

            {

                return Width * 2 + Height * 2;

            }

            public override float Area()

            {

                return Width * Height;

            }

        }

        static void Main(string[] args)

        {

            //Figure a = new Figure(); - не можемо визвати конструктор

            Figure r1 = new Rectangle(10,20);    // або Rectangle r1 

            Console.WriteLine(r1.Perimeter());    // 60  

        }