抽象与密封示例

来源:互联网 发布:全网通手机淘宝 编辑:程序博客网 时间:2024/04/29 18:34

     使用abstract申明抽象类,抽象类不能被实例化;

     使用sealed关键字申明密封类,不可从此类派生其他的类;

    下面以计算各类图形的面积为例:

这是计算圆的类(是一个密封的类):

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Shape{    public sealed class Circle:shape    {        private double radium;        public Circle (double r)        {            radium = r;        }        public override double calculateArea()        {            return Math.PI * radium * radium;        }    }}

矩形的类(密封):

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Shape{    public sealed class Rectangle:shape    {        private double length, width;        public Rectangle (double l,double w)        {            length = l;            width = 1;        }        public override double calculateArea()        {            return length * width;        }    }}

三角形的类(密封):

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Shape{    public sealed class Triangle:shape    {        private double edge, high;        public Triangle(double e, double h)        {            edge = e;            high = h;        }        public override double calculateArea()        {            return edge * high / 2;        }        }}

基类(抽象的):

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Shape{    public abstract class shape    {        public abstract double calculateArea();    }}

主函数(调用这些类):

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Shape{    class Program    {        static void Main(string[] args)        {            shape s;            s = new Triangle(12.0,5.6);            printArea(s);            s = new Rectangle(10.0, 8.1);            printArea(s);            s = new Circle(3.9);            printArea(s);            Console.ReadLine();        }        static void printArea(shape s)        {            Console.WriteLine("这个图形是" + s.GetType().ToString());            Console.WriteLine("图形面积是" + s.calculateArea().ToString());        }    }}


2 0