• 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;
       }
    
       // 派生类
       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();
          }
       }
    }

    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();
          }
       }
    }
    
    
  • 相关阅读:
    SIFT 特征提取算法总结
    Bilateral Filtering(双边滤波) for SSAO(转)
    Meanshift filter实现简单图片的卡通化效果
    HBM内存介绍
    DRAM 内存介绍(三)
    Arduino教程:MPU6050的数据获取、分析与处理
    pitch yaw roll是什么
    通过经纬度坐标计算距离的方法(经纬度距离计算)ZZ
    关于已知两点经纬度求球面最短距离的公式推导
    [Math]理解卡尔曼滤波器 (Understanding Kalman Filter)
  • 原文地址:https://www.cnblogs.com/xyzrobot/p/7517869.html
Copyright © 2020-2023  润新知