【黑马.Net程序员】C#继承与多态练习

来源:互联网 发布:税收数据质量 编辑:程序博客网 时间:2024/05/16 22:02
------------黑马.net培训-----------、wp7培训、.net培训、期待与您交流!

题目:

设计一个抽象类Shape(图形)包含求面积和周长的area()方法和perimeter()方法以及设置颜色的方法SetColor(),并利用Java多态技术设计其子类Circle(圆形)类和Triangle(三角形)类,并分别实现相应的求面积和求周长的方法。

Shape.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 抽象类{     abstract  class Shape           {        public abstract double  Area();//求面积        public abstract double Perimeter();//求周长        public abstract string Setcolor();//设置颜色    }}

Clircle.cs


using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 抽象类{    class Clircle:Shape    {        private int r;        /// <summary>        /// 设置属性        /// </summary>        public int R        {            get { return r; }            set { r = value; }        }        private int rea;        /// <summary>        /// 面积        /// </summary>        public int Rea        {            get { rea = 0;             return rea; } }        private string color;        /// <summary>        /// 颜色        /// </summary>        public string Color        {            get { return color; }            set { color = value; }        }             /// <summary>        /// 构造函数        /// </summary>        public Clircle(int  r)        {            this.r = r;        }        /// <summary>        /// 两个参数的构造函数        /// </summary>        /// <param name="r"></param>        /// <param name="color"></param>        public Clircle(int r, string color)        {            this.r = r;            this.color = color;        }        /// <summary>        /// 重载Area()函数        /// </summary>        ///               public override double Area()        {            return  3.14 * r * r;        }        /// <summary>        /// 重载Perimeter()函数        /// </summary>        /// <returns></returns>        public override double  Perimeter()        {            return 2 * 2 * r;        }        /// <summary>        /// 重载Setcolor()函数        /// </summary>        /// <returns></returns>        public override string Setcolor()        {            return color;        }    }}

Triangle.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 抽象类{    class Triangle:Shape    {        private double l;        /// <summary>        /// 设置第一个边长        /// </summary>        public double L        {            get { return l; }            set { l = value; }        }        /// <summary>        /// 设置第二个边长        /// </summary>        private double l1;        public double L1        {            get { return l1; }            set { l1 = value; }        }        private double l2;        /// <summary>        /// 设置第三边长        /// </summary>        public double L2        {            get { return l2; }            set { l2 = value; }        }        private double zc;        public double Zc        {            get{return zc;}            set{zc=0;}        }        private double s;        /// <summary>        /// 得到面积        /// </summary>        ///         public double S        {            get { return s; }            set { s = 0; }        }        /// <summary>        /// 设置颜色        /// </summary>        private string color;        public string Color        {            get { return color; }            set { color = value; }        }        /// <summary>        /// 无参数的构造函数        /// </summary>        public Triangle()        { }        /// <summary>        /// 带有两个参数的构造函数        /// </summary>        /// <param name="l"></param>        /// <param name="g"></param>        public Triangle(double l, string color)        {            this.l = l;            this.color=color;        }        /// <summary>        /// 带有四个参数的构造函数        /// </summary>        /// <param name="l"></param>        /// <param name="l1"></param>        /// <param name="l2"></param>        /// <param name="color"></param>        public Triangle(double l, double l1, double l2, string color)        {            this.l = l;            this.l1 = l1;            this.l2 = l2;            this.color = color;        }        /// <summary>        /// 返回面积        /// </summary>        /// <returns></returns>        public override double Area()        {            return Math.Sqrt( zc/2*(zc/2-l)*(zc/2-l1)*(zc/2-l2));        }        /// <summary>        /// 返回周长        /// </summary>        /// <returns></returns>        public override double Perimeter()        {                            zc= L + l1 + l2;                 return zc;        }        /// <summary>        /// 返回颜色        /// </summary>        /// <returns></returns>        public override string Setcolor()        {            return color;        }        }}
Program.cs


using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 抽象类{    class Program    {        static void Main(string[] args)        {            Shape c, s;            c = new Clircle(12,"red");            s = new Triangle(3,4,5,"green");            s.Perimeter();            Console.WriteLine("三角形的面积为:{0}", s.Area());            Console.WriteLine("圆的面积为:{0}", c.Area());            Console.WriteLine("圆的周长为:{0}", c.Perimeter());            Console.WriteLine("颜色为:{0}", c.Setcolor());            //使用多态            show(c);            show(s);            Console.ReadKey();        }        public static void show(Shape s)        {            Console.WriteLine(s.Perimeter());            Console.WriteLine( s.Area());            Console.WriteLine( s.Setcolor());        }    }}

运行结果:

总结:多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。


------------黑马.net培训-----------、wp7培训、.net培训、期待与您交流!
原创粉丝点击