如何做网站地图视频,建设银行企业网站,短视频推广平台有哪些,wordpress 发布网页C#学习笔记#xff08;十#xff09; 第七章 对象的构造方法与实例方法一、对象的构造方法1. 构造方法初识2. 构造方法的创建3. this关键字4. 构造方法的规范和重载4.1 构造方法的规范 5. 对象初始化器5.1 对象初始化器和构造方法的区别 二、对象的实例方法1. 简单应用2.实例… C#学习笔记十 第七章 对象的构造方法与实例方法一、对象的构造方法1. 构造方法初识2. 构造方法的创建3. this关键字4. 构造方法的规范和重载4.1 构造方法的规范 5. 对象初始化器5.1 对象初始化器和构造方法的区别 二、对象的实例方法1. 简单应用2.实例方法各种形式2.1 返回值2.2 访问修饰符2.3 命名规范2.4 输入参数2.5 输入参数的灵活用法2.5.1 默认参数2.5.2 输入参数的顺序 3. 实例方法使用总结 第七章 对象的构造方法与实例方法
对象主要封装两块内容一个是属性用来实现对象数据的存取。一个是方法用来实现对象的操作操作也叫行为。
一、对象的构造方法
1. 构造方法初识
什么是构造方法呢构造方法Constructor又称为构造器顾名思义就是在对象构造的时候所调用的方法。对象构造也就是对象创建或者说我们通过 new 来创建对象实例。回顾对象创建的时候代码是这么写的Class2 test2 new Class2(); 其实 new 后面的 Class2()这个就是一个无参数构造方法的调用。
2. 构造方法的创建
之前的学习中一直都在使用new 构造方法的方式来创建对象但是我们并不没有去定义和编写构造方法那么构造方法从哪里来的。 其实在类中没有写任何构造方法时编译器会帮我们自动生成一个默认的无参数的构造方法 那么编译器创建的默认构造方法在哪长什么样子。如图所示被框起来部分就是一个无参数的构造方法只不过是我们手动编写的如果我们不编写任何构造方法那么系统会在内部自动创建一个无参数的构造方法。 那么有参数的构造方法如何创建 public class Class4{// 无参数构造方法public Class4(){ }// 有参数构造方法public Class4(double Weight, string b){this.Name b;this.Weight Weight;}public double Weight{get;set;}public string Name{get;set;}}运行结果
3. this关键字
上述构造方法中带参数的构造方法使用了this对对象中的属性进行赋值这是更加规范的写法不加行吗不加也行。也不行
可以看到将name前的this去掉依旧是没有报错属性也可以正常赋值。 但是将Weight前的this去掉也是没有报错但是却不可以正常赋值了这是因为构造方法的参数名称Weight和属性的名称一样了按照“就近原则”如果我们不添加 this直接写Weight Weight;那默认都是构造方法中的参数这样自己给自己赋值就出问题了 所以this使用this可以起到一个很好的区分作用。规范的代码应该使用this。
4. 构造方法的规范和重载
4.1 构造方法的规范
public class 类名称 {public 类名称参数类型 1 参数名 1参数类型 2 参数名 2{//在这里写具体的初始化内容…}属性......方法......
}构造方法写在类的内部构造方法名称必须和类名一样。构造方法不能有任何返回值所以返回值类型也不用写。构造方法可以有参数也可以没有参数。构造方法可以有多个实现重载。上述中的一个无参数的构造方法和一个有参数的构造方法就是利用了重载
5. 对象初始化器
对象初始化器可以更加灵活的来初始化对象的属性 还是上述中的类 public class Class4{// 无参数构造方法public Class4(){ }public Class4(double Weight, string b){this.Name b;this.Weight Weight;}public double Weight{get;set;}public string Name{get;set;}}创建一个该类的对象 Class4 ATQ1 new Class4(){Weight 1219.99};Console.WriteLine(weighe: ATQ1.Weight \nname: ATQ1.Name);运行结果如图 但是Class4中并没有初始化参数只有一个Weight的构造方法。 这并不是构造方法而是在.NET3.0 时代出现的对象初始化器那么对象初始化器和构造方法有什么区别
5.1 对象初始化器和构造方法的区别
首先对象初始化器只能初始化“属性”不能初始化其他的而构造方法可以做任何初始化内容。其次对象初始化器没有强制性构造方法具有强制性。要做到区别对待灵活运用。
二、对象的实例方法
其实对象的实例方法就是开始学习的时候class中的方法或者说函数下面展开它的详细用法。
1. 简单应用
比如说之前生成一个对象并赋值 Class4 atq1 new Class4(125,流星);然后将该对象的内容打印出来 Console.WriteLine(weighe:atq1.Weight \nname:atq1.Name);每次打印都需要编写相应的内容。现在通过在class中编写实例方法直接解决这个问题。 public class Class4{// 无参数构造方法public Class4(){ }public Class4(double Weight, string b){this.Name b;this.Weight Weight;}public double Weight{get;set;}public string Name{get;set;}public void printf(){Console.WriteLine(weighe: Weight \nname: Name);}}运行结果 2.实例方法各种形式
实例方法的具体规范如下
访问修饰符 返回值类型 方法名(参数 1参数 2…)
{//这里编写方法的主体功能实现的具体过程return 返回值//如果没有返回值则不需要写该语句
}2.1 返回值
可以有返回值也可以没有返回值
2.2 访问修饰符
访问修饰符有 public、private如果不写默认就是 private
2.3 命名规范
方法名称请使用 Pascal 命名法也就是首字母大写方式命名
2.4 输入参数
实例方法可以输入参数比如上面的例子我想把对象的名称加入到打印的内容中于是在原有的class中添加新的实例方法 public void printf2(string number){Console.WriteLine(number.weighe: Weight \nnumber.name: Name);}运行结果
2.5 输入参数的灵活用法
2.5.1 默认参数
在原来的class中添加新的方法 public void printf3(string number ,bool live true){Console.WriteLine(number .weighe: Weight \n number .name: Name);if(!live){Console.WriteLine(is die);}}其中live已经给了它默认参数true 运行结果
调用这个方法的时候可以不用写这个参数,就可以使用默认值如果用户给了具体的值则使用具体参数值。 注意带参数默认值的参数必须放到最后不能放到中间或者前面因为编译器不会跳着位置去对应参数。
2.5.2 输入参数的顺序
有时候输入参数较多那么记不住它的顺序如何解决通过“命名参数”可以解决这个问题如下图所示 atq2.printf3(atq2,false);atq2.printf3(live:false,number: atq2);3. 实例方法使用总结
第一、正确的确定方法的修饰符、命名的规范性。 第二、方法的返回值要根据需要设计可以是基本数据类型、对象类型集合类型。 第三、方法参数不宜过多过多会造成调用困难。 第四、灵活的使用参数默认值、命名参数解决调用的方便性问题。