红豆带你从零学C#系列之:深入类的方法

构造函数(构造方法)

Why一般我们在实例化一个类之后,要给这个类的属性进行一些初始化的操作,比如说赋值;那么有没有办法能够在创建一个类的同时完成属性初始化的工作呢?

What是一个在类初始化的时候,自动运行的一种方法

Where在创建一个类之后,类名的下面创建构造方法,如下图:

How

语法:  访问修饰符+方法名(){}   例如:public Student() { }

规则:

  1. 方法名一定要跟类名一样
  2. 不能有返回类型
  3. 可以有参数,也可以不带参数
  4. 构造函数的访问修饰符一般是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是一组(两个或者两个以上),名字相同,参数类型不同,参数个数不同的,返回类型不一定相同的方法,这样的模式称为方法重载

  1. 方法名相同,参数类型不同,参数个数不同的,返回类型不一定会相同
  2. 可以给构造函数重载,也可以给自定义的方法重载

 

 

 

例如,我创建了一个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);

 

由此我们可以明白,遥控器只需要调用电视机的开关机方法,无需知道电视机的开关机功能具体是如何实现的,是不是?像生活中这样的例子多着呢,比如说银行与微信的支付功能,公安局的身份证验证,网站的天气预报功能等等

posted on 2016-06-18 11:41  MrK先生  阅读(220)  评论(0)    收藏  举报

导航