前言
本篇主要介绍,类的封装、访问修饰符、this关键字、属性的使用、值传递和引用传递,如果可以帮助的你,请给小编一个小赞。
一. 访问修饰符:
访问修饰符 | 访问权限 | 访问级别 |
---|---|---|
public | 不受任何限制 | 最高 |
private | 只有类的内部可以使用 | 最低 |
二. this关键字:
指的是当前对象本身,通过this可以引用当前类成员变量和方法。使用this可以解决成员变量和局部变量重名的问题。
例如:
this.Name; 访问本类中的Name属性
this.Show(); 访问本类中的Show方法
this._name; 访问本类中的_name字段
三. 用属性实现字段的封装
访问器 | 说明 |
---|---|
get | 只读属性 |
set | 只写属性 |
使用属性解决数据安全问题,通过公有属性访问私有字段
//字段
private int _age;
//属性
public int Age
{
//只读
get
{
return this._age;
}
//只写
set
{
//判断年龄是否合法
if(this._age<0 || this._age>100)
{
this._age=18;
}
else
{
this._age=value;
}
}
}
属性的作用:
- 控制私有字段的可访问性
- 保护内部数据安全
- 类内部敏感字段使用属性来控制访问
四. 封装
特征:
- 封装字段——将类中的字段、属性绑到一起
- 将私有字段封装成公有属性
- 封装是面向对象的三大特征之一(封装、继承、多态)
好处:
- 隐藏类中的内部细节
- 避免非法数据
- 保证数据的安全性和完整性
五. 参数的传递
传递类型 | 说明 |
---|---|
值传递 | 传递的的真实的值 (更改的是真实的值) |
引用传递 | 传递的是内存地址 (更改的内存地址中的值) |
通过交换字符理解值传递和引用传递,下面为值传递
//值类型传递
static void Main(string[] args)
{
//输入两个数字
Console.WriteLine("请输入两个数字:");
int num1 = int.Parse(Console.ReadLine());
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine($"交换前两个数分别为:{num1}和{num2}");
//交换两个数的值
Swap(num1,num2);
Console.WriteLine($"交换后两个数分别为:{num1}和{num2}");
Console.ReadLine();
}
//进行交换方法
private static void Swap(int num1,int num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
}
值传递:调用方法时,不更改参数的值,参数还是原来的值。
引用传递
//值类型传递
static void Main(string[] args)
{
//输入两个数字
Console.WriteLine("请输入两个数字:");
int num1 = int.Parse(Console.ReadLine());
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine($"交换前两个数分别为:{num1}和{num2}");
//交换两个数的值
Swap(ref num1,ref num2);
Console.WriteLine($"交换后两个数分别为:{num1}和{num2}");
Console.ReadLine();
}
//进行交换方法
private static void Swap(ref int num1,ref int num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
}
调用方法时,更改参数的值。
1.如果使用引用传递的话必须要将参数初始化
2.如果在使用引用传递的时候在方法调用时需要加上ref