举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > c#继承多个类 C# 继承

c#继承多个类 C# 继承

2023-02-28 07:18 C#教程

c#继承多个类 C# 继承

c#继承多个类

C#是一种面向对象的编程语言,它支持多继承,即一个子类可以从多个基类中继承属性和方法。多继承可以使子类具有多个基类的特性,从而更好地实现代码重用。

C#中的多继承是通过“:”来实现的,例如:

public class ChildClass : BaseClass1, BaseClass2 { 
    // 子类代码 
}

上面的代码表明ChildClass是BaseClass1和BaseClass2的子类,它将从这两个基类中获得特性。

C#中的多态也可以用于实施多态。例如,我们可以使用多态来创建一个函数,该函数可以接受不同子类的对象作为参数并返回不同子类的对象作为返回值。

public class BaseClass { 

    public virtual BaseClass DoSomething(BaseClass obj) { 

        // 实施逻辑 

        return obj; 

    } 
} 

 public class ChildClass : BaseClass { 

    public override BaseClass DoSomething(BaseClass obj) { 

        // 实施逻辑 

        return obj; 

    }  
} 

上面的代码表明DoSomething函数可以接受不同子类的对象作为参数并返回不同子

C# 继承

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

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

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


基类和派生类

派生类只能有一个直接基类,但一个基类可以有多个直接派生类。继承是可以传递的。定义要从其他类派生的类时,派生类会隐式获得基类的所有成员(除了其构造函数和终结器)。派生类因而可以重用基类中的代码,而无需重新实现。在派生类中,可以添加更多成员。通过这种方法,派生类可扩展基类的功能。

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

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

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

using System;
namespace InheritanceApplication{
   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

基类的初始化

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

下面的程序演示了这点:

using System;
namespace RectangleApplication{
   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();
      }
   }
}

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

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

C# 多重继承

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

using System;
namespace InheritanceApplication{
   class Shape {
      public void setWidth(int w){
         width = w;
      }
      public void setHeight(int h){
         height = h;
      }
      protected int width;
      protected int height;
   }

   // 基类 PaintCost
   public interface PaintCost {
      int getCost(int area);

   }
   // 派生类
   class Rectangle : Shape, PaintCost{
      public int getArea(){
         return (width * height);
      }
      public int getCost(int area){
         return area * 70;
      }
   }
   class RectangleTester{
      static void Main(string[] args){
         Rectangle Rect = new Rectangle();
         int area;
         Rect.setWidth(5);
         Rect.setHeight(7);
         area = Rect.getArea();
         // 打印对象的面积
         Console.WriteLine("总面积: {0}",  Rect.getArea());
         Console.WriteLine("油漆总成本: ${0}" , Rect.getCost(area));
         Console.ReadKey();
      }
   }
}

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

总面积: 35
油漆总成本: $2450
阅读全文
以上是编程学为你收集整理的c#继承多个类 C# 继承全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部