成都网站建设设计

将想法与焦点和您一起共享

C#forUnity快速入门(连载6)-C#继承性-创新互联

 C# for Unity 编程语言快速入门教程(连载6)---C#OOP编程之继承性

铁门关ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

  C#的OOP编程之继承性,其本质就是通过继承让子类减少重复代码的编写,达到优化代码的作用。继承具体指“字段”与“方法”的继承,笔者梳理本阶段的知识点如下所示。

1: 概念(基类、派生类)

   生活中有"龙生龙,凤生凤,老鼠天生会打洞",这说的是日常生活中的“继承"现象。类似情形“国民老公--"王思聪"生来就是超级富二代,而一般农民工的子女则相对穷好几个数量级。

   我们C#语言中的继承,通过":"(冒号)来定义继承关系。(类似Java语言的extend关键字)

2: 使用base,this关键字

   base 关键字代表父类对象,this关键字代表本类对象(this可以默认不写)。

3: 方法覆盖
  使用 new 关键字显示声明发生方法覆盖。

4: 继承关系中构造函数的应用.
  4.1>先执行父类的构造方法,再执行子类构造方法。
  4.2>作为良好的编程习惯:
       派生类的构造函数在执行初始化时,最好调用基类的构造函数。如果不在派生类显示调用一个基类构造函数,编译器会自动插入对基类的默认构造函数的调用,然后才调用执行派生类构造函数的代码。

5: 类的赋值
    子类对象可以赋值给父类对象,但使用中只能使用父类定义的方法。

 为了让初学者更好的学会继承的理论,现提供如下编程题目,供练习使用。

1: 已知交通工具类定义如下。
class Vehicle{
  private int _length;    //长度
  private int _width;     //宽度
  public void Drive(){}; //驾驶方法
}
要求:(1)实现这个类;(2)定义并实现一个小车类car,是它的派生类,小车本身的私有属性有载人数,小车的方法有init(设置车轮数、重量和载人数),get passenger(获取载人数),print(打印车轮数、重量和载人数)。

2: 编写一个学生和教师的数据输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。
  要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的基类。

3: 定义如下类,编程完成要求的功能。

  1) 定义一个名称为 Vehicle(车辆)类,
      字段定义如下:
      public string clour="while";   //颜色字段
      protected float speed;          //速度字段
      方法如下:
      public void accelerate(){.....}; //加速方法

  2) 定义一个名称为 Car (机动车)类
       字段如下:
      private int price;              //价格字段
      方法如下:
      public void decelerate(){.....}; //减速方法

  3) 编程要求:
     3.1) 把Vehicle 作为父类,Car 作为子类。
     3.2) 在Car 类的main方法中调用显示如下字段: clour, speed, price
      3.3) 在Car 类的main方法中调用显示方法: accelerate(), decelerate().
     3.4) 在Car 类中定义新的字段
            string clour="red";   //颜色字段
             再次运行Car类,记下字段 clour 的运行结果有什么变化? 说明这种现象的原因?
     3.5) 在Car 类中定义新的方法
           public void accelerate(....); //加速方法
                再次运行Car类,记下方法 accelerate()的运行结果有什么变化? 说明这种现象的原因?

      3.6) 在Car 类的decelerate() 中使用this 关键字调用本类的accelerate()方法。
              在Car 类的decelerate() 中使用base关键字调用父类的accelerate()方法。
             运行程序,解释输出结果。

      3.7) 分别在Vehicle 类,Car类中定义构造方法。
            再次运行程序,解释输出结果。

      3.8) 删除Vehicle 原无参构造函数,为 Vehicle 类定义有参构造方法 Vehicle(float mySpeed) ,
               作用:在构造函数中给 speed 字段赋值。 请问如何处理,使得子类代码可以正常运行,
               解释此现象。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:C#forUnity快速入门(连载6)-C#继承性-创新互联
本文路径:http://chengdu.cdxwcx.cn/article/csoocg.html