C#: 16-Abstract Classes

Like a combo of Interfaces and Classes

Given the following Classes

    public class GeometryTool
    {
        public static void Run()
        {
            // fields
            var square = new Square() { Width = 2 };
            var triangle = new Triangle() { Base = 2, Height = 5 };

            Console.WriteLine(square.GetArea());
            Console.WriteLine(triangle.GetArea());
        }
    }


    class Square
    {
        public int Width;

        public int GetArea()
        {
            return Width * Width;
        }
    }
    class Triangle
    {
        public int Base;
        public int Height;

        public int GetArea()
        {
            return (Base * Height)/ 2;
        }
    }


 

Creating a shape abstract class, allows for merging similar function names and using override methods

Interfaces have no logic whereas Abstract Classes an implemented functions

    public class GeometryTool
    {
        public static void Run()
        {
            // fields
            var square = new Square() { Width = 2 };
            var triangle = new Triangle() { Base = 2, Height = 5 };

            square.Display();
            triangle.Display();
        }
    }
    abstract class Shape
    {
        public abstract int GetArea();

        public void Display()
        {
            Console.WriteLine("The area is {0}", GetArea());
        }
    }

    class Square : Shape
    {
        public int Width;

        public override int GetArea()
        {
            return Width * Width;
        }
    }
    class Triangle : Shape
    {
        public int Base;
        public int Height;

        public override int GetArea()
        {
            return (Base * Height)/ 2;
        }
    }
Tags