zoukankan      html  css  js  c++  java
  • c#中的继承学习总结

    c#的继承方法,大体上和c++的类似,但是有点区别的,我这里刚刚初学,因此把重点记录下。
    1、派生类继承了父类,那么,如果父类的方法和数据都是public,那么派生类都会继承。派生类可以直接调用父类的数据和成员函数,当然,数据最好是用成员函数来调用,做好封装性。
    2、基类的初始化
    派生类继承了基类的成员变量和成员方法。因此父类对象应在子类对象创建之前被创建。您可以在成员初始化列表中进行父类的初始化。
    实例:

    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)
          { }        //注意这里的使用,类似是c++的。
          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();
          }
       }
    }

    上面我添加注释了,派生类的初始化和基类的初始化。
    main函数中实例化了一个Tabletop,
    Tabletop t = new Tabletop(4.5, 7.5);
    那么t.Display();调用方法之后,

    public void Display()
    {
        base.Display();    //这里会调用基类的方法
        Console.WriteLine("成本: {0}", GetCost());
    }

    这样就做到了继承。

    3、如果想要使得派生类能够完全访问被隐藏的继承成员,就可以使用基类访问表达式访问被隐藏的继承成员。基类访问表达式由关键字base后面跟一个点和成员的名称组成。
    上面base.Display();就是这个用法。
    4、创建子类对象调用子类的构造函数时,会首先调用父类的无参构造函数

    5、多重继承我这里没有看到比较好的实例,暂时不写。

    6、c#引入了override和new的机制
    override是重写,即将基类的方法在派生类里直接抹去重新写,故而调用的方法就是子类方法;而new只是将基类的方法在派生类里隐藏起来,故而调用的仍旧是基类方法。
    这个在多态的时候再学习。

  • 相关阅读:
    redhat下设置网桥br0
    RackSpace推开源云计算平台OpenStack震动业界
    centos5.2 64位yum国内源之首选 上海交大(未验证)
    image config
    编程的四种境界
    怎样学好C语言
    利用SSL加密HTTP通道加强IIS安全性
    Sql Server 日期函数
    如何启用Oracle 11g的默认用户Scott
    ASP.NET自定义错误处理页面的添加
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007297.html
Copyright © 2011-2022 走看看