面向对象之封装七

静态成员

一.静态成员基本概念

静态关键字 static

用static修饰的成员变量,方法,属性等称为静态成员

静态成员的特点是:直接用类名点出使用

二.自定义静态成员

1
2
3
4
5
6
7
8
9
10
11
12
13
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");
}
//做对比
}

三.静态成员的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
namespace 语法知识
{
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");
}
//做对比
}
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine(Test.PI);
Console.WriteLine(Test.CalcCircle(2));
//这样就可以了,直接点出来使用。
}
}
}

四.为什么可以直接点出来使用

记住!!!!!!!!

程序中是不能无中生有的

我们要使用的对象,变量,函数都是要在内存中分配内存空间的

之所以要实例化对象,目的就是分配内存空间,在程序中产生一个抽象的对象

静态成员的特点

程序开始运行时,就会分配一个内存空间,所以我们就可以直接使用

静态成员和程序“同生共死”

只要使用了它,直到程序结束时内存空间才会被释放

所以应该静态成员就会有直接唯一的应该“内存小空间”

这让静态成员有了唯一性

在任何地方使用都是用的小房间里的内容,改变了它也是改变小房间里的内容。

五.静态函数中不能使用非静态成员

成员变量只能将对象实例化出来后,才能点出来使用,不能无中生有。

不能直接使用非静态成员,否则会报错。

(非静态成员一定需要实例化对象之后,(new一个对象),才能使用)

六.非静态函数可以使用静态成员

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 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(PI);
//静态成员一定义,在程序运行时就存在。因此可以在非静态函数中使用静态成员。
}
//做对比
}

七.静态成员对我们的作用

静态变量:

1.常用唯一变量的申明

2.方便别人获取的对象的申明

静态方法:

常用的唯一方法的申明,比如相同规则的数学计算相关函数

八.常量和静态变量

const(常量)可以理解为特殊的static(静态)

相同点:他们都可以通过类名点出来使用

不同点:

1.const必须初始化,(static可以在之后赋值)不能修改,而static没有这个规则

2.const只能修饰变量,而static可以修饰很多

3.const一定是写在访问修饰符后面的,而static没有这个要求


面向对象之封装七
https://gaster44.github.io/2023/12/21/面向对象之封装七/
作者
huangjinhong
发布于
2023年12月21日
许可协议