C#温故而知新学习系列之面向对象编程—8-方法的重载
来源:互联网 发布:知乎专栏好申请吗 编辑:程序博客网 时间:2024/05/16 15:40
我们说过构造函数是对类进行初始化的,我们希望刚出生的小猫有个姓名叫“咪咪”,当它叫的时候,能说“我的名字叫咪咪”,此时就要用到构造函数了,如下代码没有加绿色代码的部分,但是问题来了?如果我们事先没有给小猫起好名字,那么就创建不了实例了,这种现象很正常,有些父母刚生下孩子的时候,姓名没有起好是很正常的事情,就以下的代码没有加绿色代码的部分,你如果写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;
}
}
}
运行效果
思考
上面的例子,有的小猫起好了名字,就用带string参数的构造函数,有的小猫没有起名字,就用不带参数的构造函数,这样就达到了扩展的目的
如果我们需要分清楚猫的姓和名,可以再重载一个构造方法public Cat(string strFirstName,string strLastName)
- C#温故而知新学习系列之面向对象编程—8-方法的重载
- C#温故而知新学习系列之面向对象编程—4-方法
- C#温故而知新学习系列之面向对象编程—9-静态方法
- C#温故而知新学习系列之面向对象编程—10-扩展方法
- C#温故而知新学习系列之面向对象编程—3-类的数据成员
- C#温故而知新学习系列之面向对象编程—13-类和结构的区别是什么?
- C#温故而知新学习系列之面向对象编程—15-对象初始化器
- C#温故而知新学习系列之面向对象编程—1-定义类与创建类的对象
- C#温故而知新学习系列之面向对象编程—2-定义结构
- C#温故而知新学习系列之面向对象编程—5-ref参数
- C#温故而知新学习系列之面向对象编程—6-out参数
- C#温故而知新学习系列之面向对象编程—7-构造函数
- C#温故而知新学习系列之面向对象编程—11-自动属性
- C#温故而知新学习系列之面向对象编程—12-属性
- C#温故而知新学习系列之面向对象编程—14-分布类是什么?
- C#温故而知新学习系列之面向对象编程—16-析构函数
- C#温故而知新学习系列之面向对象编程—接口和抽象类的区别是什么?(十八)
- C#温故而知新学习系列之XML编程—8-XMLSerializer类把XML文档反序列化为对象
- .net 中读取Excel2007的方法(服务器不装office2007) for ExcelToSQL
- 函数指针总结
- 关于linux的export命令
- [随笔追溯]2011年最后一天值班
- C#温故而知新学习系列之面向对象编程—7-构造函数
- C#温故而知新学习系列之面向对象编程—8-方法的重载
- Linux操作系统下终端乱码的终极解决方案 export LANG=zh_CN.UTF-8 export LANG=en_US
- 在cocos2d中使用粒子系统
- 数据库实用大全(四)
- SQL Server 中 RAISERROR 的用法
- Blog
- 使用TCP协议的NAT穿透技术
- Linux / Cygwin Extracting files 解压文件
- fft在不同平台的运行效能