【设计模式】(三)-附录A:方法重载

概念

方法重载是指在一个类中定义多个同名的方法,但要求每个具有不同的参数或参数的个数。
我们可以理解为方法重载可在不改变原方法的基础上,新增功能。方法重载算是提供了函数可扩展的能力。

注意事项

1.并不是只有构造方法可以重载,普通方法也是可以重载的。
2.方法重载时,两个方法必须要方法名相同,但参数类型或个数必须要有所不同。
3.和返回值没有关系,和参数的个数和类型有关。

好处

1.对多个属性进行赋值时,不需要重复的写实例名。
2.可以保证用户在new一个对象时,必须对某一个属性进行赋值。

构造方法重载

比如说一只猫在出生的时候,就给这只猫起好名字了,定义一个Cat类的构造方法,返回一个字符串就好了,代码如下:

public class Cat
    {
 private string name = "";
        public Cat(string name)
        {
            this.name = name;
        }
        public string Shout()
        {
            return "我的名字叫" + name + " 喵";
        }
      }

客户端代码:

        private void button1_Click(object sender, EventArgs e)
        {
            Cat cat = new Cat("咪咪");
          
            MessageBox.Show(cat.Shout());
         
        }

最后显示结果:
在这里插入图片描述

这是刚出生有名字的猫,那如果刚出生没有起好名字的该怎么办呢?猫也得分个公母吧,这时候就要用到方法重载了。

public class Cat
    {
        private string name = "";
        private char gender = ' ';
        public Cat(string name)
        {
            this.name = name;
        }
        public Cat()
        {
            this.name = "";
        }
       public Cat(char gender)
        {
            this.gender = gender;
        }
        
        public string Shout()
        {
            return "我的名字叫" + name + " 喵";
        }
      public string Shout1()
        {
            return "我没有名字" + name + " 喵";
        }
        public string Shout2()
        {
            return "我是" + gender +"猫" + " 喵";
        }

客户端代码:

 public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Cat cat = new Cat("咪咪");
          
            MessageBox.Show(cat.Shout());
         
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Cat cat1 = new Cat();
            MessageBox.Show(cat1.Shout1());
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Cat cat2 = new Cat('公');
            MessageBox.Show(cat2.Shout2());
        }

最后显示结果:
在这里插入图片描述
在这里插入图片描述

普通方法重载

计算两个数的和,要考虑两个都是整数类型的,还有一个整数一个小数类型的,还考虑两个都是小数类型的。
1.不使用方法重载:

 static void Main(string[] args)
        {
            Console.WriteLine(AddNumber1(2,6));
            Console.WriteLine(AddNumber2(1, 2));
            Console.WriteLine(AddNumber3(3, 2.2));
            Console.ReadKey();
        }
        public static int AddNumber1(int num1,int num2)
        {
            return num1 + num2;
        }
        public static double AddNumber2(int num1, double num2)
        {
            return num1 + num2;
        }
        public static double AddNumber3(double num1,double num2)
        {
            return num1 + num2;
        }

不用方法重载,每次都要重新定义一个函数名,然后作用是一样的,造成了“资源浪费”,使用方法重载就可以用相同的函数名,去完成这些功能。

2.使用方法重载:

 static void Main(string[] args)
        {
            Console.WriteLine(AddNumber(2,6));
            //Console.WriteLine(AddNumber2(1, 2));
            //Console.WriteLine(AddNumber3(3, 2.2));
            Console.ReadKey();
        }
        public static int AddNumber(int num1,int num2)
        {
            return num1 + num2;
        }
        public static double AddNumber(int num1, double num2)
        {
            return num1 + num2;
        }
        public static double AddNumber(double num1,double num2)
        {
            return num1 + num2;
        }

总结

方法重载用的地方还是挺多的,多加练习,就能掌握了。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值