Abstract classes in C#

Related Video

https://youtu.be/5cS6bztfcdo

Code for the Scenario discussed in Video


using System;
using System.Collections.Generic;

namespace CSharpTutorials
{
	class Program
	{
		static void Main(string[] args)
        {

			List<Shape> shapes = new List<Shape>();
			Rectangle rect1 = new Rectangle(4, 5);
			Square sq1 = new Square(4);
			Square sq2 = new Square(5);
			Rectangle rect2 = new Rectangle(6, 7);
			shapes.Add(rect1);
			shapes.Add(rect2);
			shapes.Add(sq1);
			shapes.Add(sq2);

			foreach(Shape s in shapes)
            {
				Console.WriteLine(s.ToString() + s.Area());
            }


			foreach (Shape s in shapes)
			{
				if(s.GetType() == typeof(Rectangle))
					Console.WriteLine(s.ToString() + s.Area());
			}
			Console.ReadKey();

		}
	}

	public abstract class Shape
    {
		public double l { get; set; }
		public double w { get; set; }
		public Shape()
        {

        }
		public Shape(double l,double w)
        {
			this.l = l;
			this.w = w;
        }
		public Shape(double l)
        {
			this.l = l;
        }
		public abstract double Area();
    }
	public class Rectangle : Shape
    {
		public Rectangle(double l,double w):base(l,w)
        {

        }
		public override string ToString()
		{
			return "Rectangle : ";
		}
		public override double Area()
        {
			return l * w;
        }
	}
	public class Square : Shape
	{
		public Square()
        {

        }
		public Square(double l):base(l)
        {

        }
		public override string ToString()
		{
			return "Square: ";
		}
		public static Square operator + (Square s1,Square s2)
        {
			Square sqr = new Square();
			sqr.l = s1.l + s2.l;
			return sqr;
        }
		public override double Area()
		{
			return l * l;
		}
	}
}

Rectangle and Square class are Derived classes
Shape class is Base class which is made abstract with an Area Function Declared as Abstract to make sure that every derived class must define Area Function.
Abstract keyword is used to declare Abstract function in base class
override keyword is used to define abstract function from base class in derived class.

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *