阅读 127

C# 继承

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

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

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

基类和派生类

一个类可以派生自多个类或接口,这意味着它可以从多个基类或接口继承数据和函数。

C# 中创建派生类的语法如下:

<访问修饰符符> 
{
 ...
}

{
 ...
}

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

示例

 System;
 
{
     
   {
      
      {
         width = w;
      }
      
      {
         height = h;
      }
        width;
        height;
   }

   
    : 
   {
      
      { 
          (width * height); 
      }
   }
   
    
   {
      
      {
         Rectangle Rect =  Rectangle();

         Rect.setWidth();
         Rect.setHeight();

         
         Console.WriteLine(,  Rect.getArea());
         Console.ReadKey();
      }
   }
}

当上面的代码被编译和执行时,它会产生下列结果:

总面积: 35

基类的初始化

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

下面的程序演示了这点:

示例

 System;
 
{
    
   {
      
        length;
        width;
      
      {
         length = l;
         width = w;
      }
      
      {
          length * width;
      }
      
      {
         Console.WriteLine(, length);
         Console.WriteLine(, width);
         Console.WriteLine(, GetArea());
      }
   }
     : 
   {
        cost;
      
      { }
      
      {
          cost;
         cost = GetArea() * ;
          cost;
      }
      
      {
         .Display();
         Console.WriteLine(, GetCost());
      }
   }
    
   {
      
      {
         Tabletop t =  Tabletop(, );
         t.Display();
         Console.ReadLine();
      }
   }
}

当上面的代码被编译和执行时,它会产生下列结果:

长度: 4.5宽度: 7.5面积: 33.75成本: 2362.5

C# 多重继承

多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承相对,单一继承指一个类别只可以继承自一个父类。

C# 不支持多重继承。但是,您可以使用接口来实现多重继承。下面的程序演示了这点:

示例

 System;
 
{
     
   {
      
      {
         width = w;
      }
      
      {
         height = h;
      }
        width;
        height;
   }

   
      
   {
      ;

   }
   
     : , 
   {
      
      {
          (width * height);
      }
      
      {
          area * ;
      }
   }
    
   {
      
      {
         Rectangle Rect =  Rectangle();
          area;
         Rect.setWidth();
         Rect.setHeight();
         area = Rect.getArea();
         
         Console.WriteLine(,  Rect.getArea());
         Console.WriteLine( , Rect.getCost(area));
         Console.ReadKey();
      }
   }
}

当上面的代码被编译和执行时,它会产生下列结果:

总面积: 35油漆总成本: $2450


文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐