成员属性
基本概念
1.用于保护成员变量
2.为成员属性的获取和赋值添加逻辑处理
3.解决3P的局限性
public——内外访问
private——内部访问
protected——内部和子类访问
属性可以让成员变量在外部
只能获取 不能修改 或者 只能修改 不能获取
基本语法
访问修饰符 属性类型 属性名
{
get{ 可以在返回之前 添加逻辑规则,意味着 这个属性可以获取的内容 }
set{ 可以在设置之前 添加一些逻辑规则, value 关键词 在set里有用 用于表示 外部传入的值 }
}
成员属性 一般用 帕斯卡命名法
成员属性中 get 和 set 前可以加访问修饰符
注意
1.默认不加,会使用属性申明时的访问权限
2.加的访问修饰符要低于属性的访问权限
3.不能让get和set的访问权限都低于属性的权限
加密处理 打印出来还是原值,但存储过程中并非原值
get 和 set 可以只有一个
注意
只有一个时 没必要在前面加访问修饰符
一般是只有get 只有set的情况较少
自动属性
作用:外部能得到不能改的特征
如果类中有一个特征是只希望外部能得不能改的 又没什么特殊处理
那么可以直接使用自动属性
如: public float hight
{
get;
set;
}
索引器
基本概念
让对象可以像数组一样通过索引器访问其中元素,使程序看起来更直观,更容易编写
索引器语法
访问修饰符 返回值 this [参数类型 参数名,参数类型 参数名... ...]
{
内部的写法和规则和索引器相同
get{}
set{}
}
索引器的使用
public Person this[int index]
{
get
{
//根据需求处理内容
if (friends == null|| friends.Length - 1 < index)
{
return null;
}
return friends[index];
}
set
{
if (friends == null)
{
friends = new Person[] { value };
}
else if (index > friends.Length - 1)
{
此处相当于自定一个规则 如果索引越界 就默认把最后一个元素顶掉
friends[friends.Length - 1] = value;
}
value 代表传入的值
friends[index] = value;
}
}
——————————————————————————————————————
Person p = new Person();
p[0] = new Person();
Console.WriteLine(p[0]);
p[0, 0] = 10;
索引器可以重载
静态成员
基本概念
关键词 static
用static修饰的 成员变量 、方法 、属性
称为静态成员
静态成员的特点是:直接用类名 . 点出使用
静态成员的使用
class Test
{
静态成员变量
public static float PI = 3.1415926f;
public int testInt = 100;
静态成员方法
public static float CalcCircle(float r)
{
return PI*r*r;
}
成员方法
public void TestFun()
{
Console.WriteLine("123");
}
}
————————————————————————————————————————————————————————————————————
Console.WriteLine(Test.PI);
Console.WriteLine(Test.CalcCircle(2));
Test t = new Test();
为什么可以点出来就用
为什么其他的需要 new
记住!
程序中是不能无中生有的
我们要使用的对象、变量,函数都是要在内存中分配内存空间的
之所以要实例化对象,目的就是分配内存空间,在程序中产生一个抽象的对象
静态成员的特点
程序开始运行时 就会分配内存空间。所以我们就能直接使用
静态成员和程序同生共死
只要使用了他,直到程序结束时内存空间才会被释放
所以一个静态成员就会有自己的唯一的一个“内存小房间”
这让静态成员就有了唯一性
在任何地方使用都是用的小房间的内容,改变了它也是改变小房间里的内容
静态函数中不能使用非静态成员
成员变量只能将对象实例化出来后 才能点出来使用 不能无中生有
不能直接使用 非静态成员 否则会报错
要用必须先实例化 二者生命周期不同
非静态函数可以使用静态成员
静态成员对于我们的作用
静态变量
1.常用唯一变量的申明
2.方便别人获取的对象申明
静态方法:
常用的唯一的方法申明 比如 相同规则的数学计算相关函数
常量和静态变量
const (常量)可以理解为特殊的static(静态)
相同点
他们都可以通过类名点出使用
不同点
1.const必须初始化,不能修改 static没有这个规则
2.const只能修饰变量、static可以修饰很多
3.const一定是写在访问修饰符后面的 static没有这个要求
4.const申明的值必须初始化 也无法修改 static则不是