csharp 面向对象编程

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Shape
{
    /**
     * 抽象形状类
     */
    public abstract class Shape
    {
        private int edge;
        //构造函数 
        public Shape(int edge)
        {
            this.edge = edge;
        }
        //抽象类实现的方法,子类可以重用
        public int GetEdge()
        {
            return this.edge;
        }
        //抽象方法,子类必须重写,并在声明上加上override
        public abstract int CalcArea();
    }

    /**
     * 三角形类,继承自形状类
     */
    public class Triangle : Shape
    {
        private int bottom;
        private int height;
        //构造函数,构造的同时调用父类指定构造器
        public Triangle(int bottom, int height)
            : base(3)
        {
            this.bottom = bottom;
            this.height = height;
        }
        //重写同名方法
        public override int CalcArea()
        {
            return this.bottom * this.height / 2;
        }
    }

    /**
     * 矩形类,继承自形状类
     */
    public class Rectangle : Shape
    {
        private int bottom;
        private int height;
        //构造函数,构造的同时调用父类指定构造器
        public Rectangle(int bottom, int height)
            : base(4)
        {
            this.bottom = bottom;
            this.height = height;
        }
        //重写同名方法
        public override int CalcArea()
        {
            return this.bottom * this.height;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //测试,可用父类映射子类
            Shape triangle = new Triangle(4, 5);
            Console.WriteLine(triangle.GetEdge());
            Console.WriteLine(triangle.CalcArea());

            Shape rectangle = new Rectangle(4, 5);
            Console.WriteLine(rectangle.GetEdge());
            Console.WriteLine(rectangle.CalcArea());
        }
    }
}
原文地址:https://www.cnblogs.com/zfc2201/p/3561106.html