C#で抽象クラスを作ってみよう。
●Program.cs

using System;
using System.Collections.Generic;

namespace AbstractMethod
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<Figure>{
                new Square("四角形",5.0,4.0),
                new Triangle("三角形",4.0,3.0)
            };
            list.ForEach((v) =>{
                Console.WriteLine($"横:{v.Width:F1},縦:{v.Height:F1},図形:{v.Name}の面積は{v.GetArea():F1}");

            });
        }
    }
    abstract class Figure
    {
        public string Name { get; set; }
        public double Width { get; set; }
        public double Height { get; set; }

        public Figure(string name,double width, double height)
        {
            this.Name = name;
            this.Width = width;
            this.Height = height;
        }
        //抽象メソッド
        public abstract double GetArea();
    }

    class Square : Figure
    {
        public Square(string name,double width, double height) : base(name,width, height) { }
        public override double GetArea()
        {
            return this.Width * this.Height;
        }
    }
    class Triangle : Figure
    {
        public Triangle(string name,double width, double height) : base(name,width, height) { }
        public override double GetArea()
        {
            return this.Width * this.Height / 2;
        }
    }
}