红豆带你从零学C#系列之:深入类的方法
构造函数(构造方法)
Why:一般我们在实例化一个类之后,要给这个类的属性进行一些初始化的操作,比如说赋值;那么有没有办法能够在创建一个类的同时完成属性初始化的工作呢?
What:是一个在类初始化的时候,自动运行的一种方法
Where:在创建一个类之后,类名的下面创建构造方法,如下图:

How:
语法: 访问修饰符+方法名(){} 例如:public Student() { }
规则:
- 方法名一定要跟类名一样
- 不能有返回类型
- 可以有参数,也可以不带参数
- 构造函数的访问修饰符一般是public的
例如:
不带参数的构造函数:public Student() { }
带参数的构造函数: public Student(int num,string str) { }
我们可以通过在构造方法里面加一句“Console.WriteLine("测试");”运行并且调试,会证明构造方法确实在实例化类的同时自动运行的
经过实验我们得到一个结论:
当类没有声明构造函数时,创建类的时候就默认调用无参构造函数;
当类已经声明构造函数时,创建类的时候就可以按照已知的构造函数传递参数
例如:
不带参数的构造函数 Student stu = new Student();
带参数的构造函数 Student stu = new Student(“001”,“张三”);
方法重载
Why:比如“唱歌”的方法是每个人都会的,假如医生,军人,学生都会唱歌,那每个人的唱歌的方法都不相同,因此我们程序里面需要为他们3人定义三种不同的唱歌的方法,都采用不同的方法名,但如果有100万个人呢?岂不是要定义100万个不同名的方法?有什么办法可以解决这种问题吗?
What:是一组(两个或者两个以上),名字相同,参数类型不同,参数个数不同的,返回类型不一定相同的方法,这样的模式称为方法重载
- 方法名相同,参数类型不同,参数个数不同的,返回类型不一定会相同
- 可以给构造函数重载,也可以给自定义的方法重载
例如,我创建了一个A方法public void A(){}
接下来我在下面继续创建了几个方法
public void A(int a){}
public string A(int a,int b){}
public void A(int a,string b){}
public int A(string a,int b){}
等等,方法名相同,参数的个数或类型不同的方法,我们叫做方法A的重载方法
对象交互
Why:现实生活中的对象交互,比如遥控器与电视机;顾客,服务员与厨师之间的关系,以及怎么样去用程序来描述这些动作过程。
现实当中电视机会关机,会开机,会换台;但是实际上,电视是不用自己开关机和换台的,在程序中我们通常是做一个电视机的类,然后带3个方法负责开关机和换台, 然后再做一个遥控器的类,同样带3个开关机和换台的方法。运行程序的时候创建遥控器和电视机对象,然后在遥控器的方法中调用电视机对应的方法,执行的结果是一样的。
例如:
电视机类: public class Television{ 开机(…); 关机(…);换台(…); }
遥控器类: public class Controller{
开机(Television tv) {tv.开机()};
关机(Television tv) {tv.关机()};
换台(Television tv) {tv.换台()};
}
运行时,创建两个对象,并形成调用执行功能
Television tv = new Television();
Controller ctrl = new Controller();
ctrl.开机(tv);
ctrl.关机(tv);
ctrl.换台(tv);
由此我们可以明白,遥控器只需要调用电视机的开关机方法,无需知道电视机的开关机功能具体是如何实现的,是不是?像生活中这样的例子多着呢,比如说银行与微信的支付功能,公安局的身份证验证,网站的天气预报功能等等
浙公网安备 33010602011771号