C# 继承和枚举

504 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情

C# 继承

继承是面向对象程序设计中的概念之一。继承允许根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。

当创建一个类时,不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的基类,这个新的类被称为派生类

继承的思想实现了 属于(IS-A) 关系。例如,哺乳动物 属于(IS-A) 动物,狗 属于(IS-A) 哺乳动物,因此狗 属于(IS-A) 动物。 

多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承相对,单一继承指一个类别只可以继承自一个父类。C# 不支持多重继承。但是可以使用接口来实现多重继承。

一、基类和派生类

一个类可以派生自多个类或接口,这意味着它可以从多个基类或接口继承数据和函数,C# 中创建派生类的语法如下:

<acess-specifier> class <base_class>
{
  ...
}
class <derived_class> : <base_class>
{
  ...
}

有一个基类 Shape,它的派生类是 Rectangle

class Shape
{
    public void setWidth(int w)
    {
        width = w;
    }
    public void setHeight(int h)
    {
        height = h;
    }
    protected int width;
    protected int height;
}
// 派生类
class Rectangle : Shape
{
    public int getArea()
    {
        return (width * height);
    }
}
class RectangleTester
{
    static void Main(string[] args)
    {
        Rectangle Rect = new Rectangle();
        Rect.setWidth(5);
        Rect.setHeight(7);
        // 打印对象的面积
        Console.WriteLine("总面积: {0}", Rect.getArea());
        Console.ReadKey();
    }
}
​

当上面的代码被编译和执行产生结果: 总面积: 35

二、基类的初始化

派生类继承了基类的成员变量和成员方法。因此父类对象应在子类对象创建之前被创建。您可以在成员初始化列表中进行父类的初始化。

 class Rectangle
 {
     // 成员变量
     protected double length;
     protected double width;
     public Rectangle(double l, double w)
     {
         length = l;
         width = w;
     }
     public double GetArea()
     {
         return length * width;
     }
     public void Display()
     {
         Console.WriteLine("长度: {0}", length);
         Console.WriteLine("宽度: {0}", width);
         Console.WriteLine("面积: {0}", GetArea());
     }
 }//end class Rectangle  
 class Tabletop : Rectangle
 {
     private double cost;
     public Tabletop(double l, double w) : base(l, w)
     { }
     public double GetCost()
     {
         double cost;
         cost = GetArea() * 70;
         return cost;
     }
     public void Display()
     {
         base.Display();
         Console.WriteLine("成本: {0}", GetCost());
     }
 }
 class ExecuteRectangle
 {
     static void Main(string[] args)
     {
         Tabletop t = new Tabletop(4.5, 7.5);
         t.Display();
         Console.ReadLine();
     }
 }
​

三、enum 变量

 枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值数据类型。换句话说,枚举包含自己的值,且不能继承或传递继承。声明枚举的一般语法:

enum <enum_name>      {           enumeration list       };
 • enum_name 指定枚举的类型名称。  • enumeration list 是一个用逗号分隔的标识符列表。

枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0.例如:

   enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };

枚举变量的用法:

using System;
 namespace EnumApplication
{
    class EnumProgram
    {
        enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };
        static void Main(string[] args)
        {
            int WeekdayStart = (int)Days.Mon;
            int WeekdayEnd = (int)Days.Fri;
            Console.WriteLine("Monday: {0}", WeekdayStart);
            Console.WriteLine("Friday: {0}", WeekdayEnd);
            Console.ReadKey();
        }
    }
}