前言探讨

  我们说过构造函数是对类进行初始化的,我们希望刚出生的小猫有个姓名叫“咪咪”,当它叫的时候,能说“我的名字叫咪咪”,此时就要用到构造函数了,如下代码没有加绿色代码的部分,但是问题来了?如果我们事先没有给小猫起好名字,那么就创建不了实例了,这种现象很正常,有些父母刚生下孩子的时候,姓名没有起好是很正常的事情,就以下的代码没有加绿色代码的部分,你如果写Cat cat = new Cat();是会报“Cat方法没有采用0个参数的重载”的错误,原因就是必须要给小猫起名字,如果不需要起名字也要生下小猫,可以用方法重载实现

  方法的重载

  提供了创建同名的多个方法的能力,但是这些方法需要使用不同的参数类型

  方法重载时,两个方法名必须要相同,但是参数类型或个数必须有所不同

  方法重载的好处是什么?

  方法重载的好处是在不改变原方法的基础上,新增功能

  实例

  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;

  namespace _7_ConstructedFunction
  {
      class Program
      {
          static void Main(string[] args)
          {
              Cat cat = new Cat("咪咪");
              Console.WriteLine(cat.Shout());

       //不起名字也能生下小猫

       Cat cat2 = new Cat();

       Console.WriteLine(cat2.Shout());
              Console.ReadKey();
          }
      }

      class Cat
      {
          private string _name = "";

      //通过加这段绿色代码,把构造方法重载

     public Cat()
      {

        this._name = "无名";
     }
          public Cat(string name)
          {
              this._name = name;
          }

          public string Shout()
          {
              return "我的名字叫" + _name;
          }
      }
  }

  运行效果

  C#温故而知新学习系列之面向对象编程—方法的重载(八)

  思考

  上面的例子,有的小猫起好了名字,就用带string参数的构造函数,有的小猫没有起名字,就用不带参数的构造函数,这样就达到了扩展的目的

  如果我们需要分清楚猫的姓和名,可以再重载一个构造方法public Cat(string strFirstName,string strLastName)

相关文章:

  • 2022-02-23
  • 2021-12-11
  • 2022-03-09
  • 2022-02-11
  • 2022-01-26
  • 2021-05-26
  • 2021-07-16
  • 2022-02-15
猜你喜欢
  • 2021-11-10
  • 2021-07-31
  • 2021-08-01
  • 2021-09-04
  • 2021-07-30
  • 2021-11-12
  • 2021-12-01
相关资源
相似解决方案