1:构造函数
1:构造函数具有一下特点:
- 方法名与类名相同
- 没有返回值类型
- 主要完成对象的初始化工作
2:问题:构造函数没有返回值类型,是不是可以定义为void?
解答:由于void修饰的方法表示返回值类型为空,并不代表没有返回值类型,所以不能将构造函数定义为void。
3:注意:我们在进行开发时,一般不在构造函数中进行类的实例化初始化以外的事情,不要尝试显式地调用构造函数。
4:无参构造函数
在默认情况下,系统会给类分配一个无参构造函数,并且没方法体,我们也可以自定义一个无参构造函数,在无参构造函数地方法体中对类的属性进行赋值。
语法:
访问修饰符 类名()
{
//方法体
}
5:带参数的构造函数
语法:
访问修饰符 类名(参数列表)
{
//方法体
}
注意:
参数列表一般用于给类的属性赋值,调用带参构造函数一定要使传入的参数和参数列表相对应。
6:隐式构造函数
1:在讲无参构造函数时我们讲过,当不给类编写构造函数时,系统将自动给类分配一个无参构造函数,称为隐式构造函数。C#有一个规定,一旦类有了构造函数,就不再自动分配构造函数。
2:问题:我们发现构造函数的访问修饰符都是public,是不是所有的构造函数的访问修饰符都是public呢?
解答:一般情况下构造函数的访问修饰符是public,不过C#也有私有构造函数,以后大家在接触到设计模式时,就会见到这种写法了。
2:方法重载
1:构造函数的重载
多个构造函数提供了多种实例化一个类的方式,这种方式就是方法重载。具体来讲,在面向对象的语言中,允许我们在同一个类中定义多个方法名相同,参数列表(参数个数,参数类型)不同的方法,称为方法重载。调用时会根据实际传入的参数的形式,选择与其匹配的方法执行。构造函数的重载是方法重载的一种特殊方式。
2:方法重载的特点:
- 方法名相同
- 方法参数类型不同或者参数个数不同
- 在同一类中
注意:方法名及参数列表相同的方法,仅是返回值类型不同,不能称为方法重载。
3:方法重载不仅能避免命名的麻烦,还能使调用者不必判断方法名就可以直接调用。
3:对象交互
1:概述:在面向对象的世界里,一切皆为对象,对象与对象相互独立,互不干涉,但在一定外力的作用下,对象开始共同努力。
2:程序不运行,对象与对象之间没有任何交互,但是在事件等外力的作用下,对象与对象之间就开始协调工作。
3:每个类都有自己的特性和功能,我们把它们封装为属性和方法。对象之间通过属性和方法进行交互。可以认为方法的参数及方法的返回值都是对象间相互传递的信息。
4:如果编译器提示“为将对象引用到实例“,说明对象间协作时,各个对象都应该进行初始化,即不能是一个空对象。如果对象为空,它的行为将无法展现。