一,构造函数的特点
1.方法名与类名相同
2.没有返回值类型
3.主要完成对象的 初始化工作
二,无参构造函数
在默认的情况下,系统会给类分配一个无参构造函数,并且没有方法体。
我们也可以自定义一个无参构造函数的方法体中对类的属性进行赋值,无参构造函数的语法:
语法:
访问修饰符 类名 ()
{
//方法体
}
三,带参构造函数 语法:
访问修饰符 类名(参数列表)
{
//方法体
}
参数列表一般用来给类的属性赋值,仍以SE对象的初始化对象为例来说明带参构造函数的用法
示例3:
public class SE { //带参构造函数 } public SE (string,id,string name,int age,Gender render) { this.Id=id; this.Name=name; this.Age=age; this.Gender=gender; } //测试类的Main()方法 static void Main(string []args) { SE engineer=new SE("2","爱编程","Gender","100"); Console.WriteLine(engineer.SayHi()); Console.ReadLine(); }
四,隐式构造函数
SE中只有一个带参构造的函数,现在要创建两个SE对象。无参构造是说过,当官不给类编写构造函数时,系统将会自动分配一个无参构造函数。称之为隐式转换构造函数,
C#中有一个规定,一旦有了构造函数,就不会自动分配构造函数了。
4.2.1构造函数的重载
在面向对象的语言中,允许我们在同一个类中定义多个方法名相同,参数列表(参数个数,参数类型)
不同的方法称之为方法的重载,调用时会根据实际传入的参数形式,选择与其匹配的方法执行。构造函数的重载的方法,重载的一种特点。
1.方法名相同
2.方法参数类型不同
3.在同一个类中
注意:方法名及其参数列表相同的方法,仅是返回值类型不同,不能称之为方法重载。
4.3对象间交互
在面向对象的世界里,一切皆对象,对象与对象的相互独立互不干涉,但在一定外力的作为,对象开始共同努力。
在面向对象的程序中,对象与对象之间,没有任何交互,但是在事件等外力的作用下,对象与对象之间就开始协调工作。
4.3.2对象交互示例
public class RemoteControl { //开机 public void TurnOn(Televsion tv) { tv.Open(); //调用电视机开机方法 } } //关机方法 public void TurnOff(Televsion tv) { tv.Turnoff(); //调用关闭电视的方法 } public void ChangChanne(Televsion tv) { Console.WriteLine("请输入频道号"); string changNo=Console.ReadLine(); tv.change(ChangeNo); } //电视机类 public class Televsion { private Boolean ison=false; //是否开机 if(ison) { Console.WriteLine("电视机已打开"); }else{ Console.WriteLine("成功打开电视机"); ison=ture; } }
//测试类调用Main()方法 static void Main(string []args) { RemoteControl control =new RemoteControl(); Televsion tv=new Televsion(); //开机 Control.Open(); //切换频道 Control.ChangeChange(); //关机 Control.TurnOff(); Console.ReadLine(); }
经验:一旦程序报错,"未将对象引用设置到对象的实例",我们就可以认定某个对象,没有实例化。
此时可以通过这些错误代码找到哪个对象没有实例化,进行相应的修改。