csharp 面向对象编程

时间:2014-02-23 05:35:35   收藏:0   阅读:702
bubuko.com,布布扣
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());
        }
    }
}
bubuko.com,布布扣

原文:http://www.cnblogs.com/zfc2201/p/3561106.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!