【C#学习记录】二、面向对象基础概念
学习视频地址:https://b23.tv/BV1FJ411W7e5
目录- 面向对象概念
- 和面向过程的区别
- 类的基本语法
- 字段、属性、方法
- 静态和非静态的区别
- 构造函数
- this关键字
- 析构函数
- 命名空间
- 值类型和引用类型
面向对象概念
和面向过程的区别
面向过程:面向的是完成这件事的过程,强调的是完成这件事的动作
面向对象:找个对象帮你做事
打开冰箱门
把大象塞进冰箱里
关闭冰箱门
冰箱门可以被打开
大象可以被塞进冰箱里
冰箱门可以被关闭
这里,面向过程一般是主动态,面向过程一般是被动态。
我们在代码中描述一个对象,描述对象的特征和行为(属性和方法)
对象必须是看得见摸得着的。
我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来类这个概念。
类就是个母子,确定了对象应该具有的属性和方法。
类的基本语法
[public] class 类名
{
字段;//存储数据的
属性;
方法;//行为
}
写好了一个类之后,我们需要创建这个类的对象,那么,我们管创建这个类的对象过程称之为类的实例化。使用关键字 new。
this.表示当前这个类的对象。
类是不占内存的,而对象是占内存的。
结构是面向过程的,类是面向对象的。结构不具备封装、继承、多态。
字段、属性、方法
属性的作用就是保护字段,对字段的赋值和取值进行保护
field字段 method方法 properties属性
属性本质上就两个方法 get() set()
- 既有get()又有set(),叫可读可写属性
- 只有get()没有set(),叫只读属性
- 没有get()只有set(),叫只写属性
静态和非静态的区别
-
非静态类中,既可以有实例成员,也可以有静态成员
-
在调用实例成员的时候,需要使用对象名.实例成员
在调用静态成员的时候,需要使用类名.静态成员名
总结:静态成员必须使用类名去调用,而实例成员使用对象名调用
静态函数中,只能访问静态成员,不允许访问实例成员。
实例函数中,既可以使用静态成员,也可以使用实例成员
构造函数
- 构造函数没有返回值,连void也不能写
- 构造函数的名称必须和类相同
- 如果没有指定构造函数,则自动生成一个无参的构造函数;如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。
- 创建对象的时候会运行构造函数。
- 构造函数可以重载。
this关键字
作用:
- 代表这个对象
- 显式地调用自己的构造函数
析构函数
当程序结束的时候 析构函数才执行
帮助我们释放资源
GC Garbage Collection
命名空间
用于解决类重名的问题,可以看作类的”文件夹“
如果在当前项目中没有这个类的命名空间,需要我们手动导入这个类所在的命名空间,有以下几种方式
- ALT+SHIFT+F10
- 手动写,using 命名空间
- 鼠标点
在一个项目内应用另一个项目
- 添加引用
- 引用命名空间
值类型和引用类型
区别
- 值类型和引用类型在内存上存储的地方不一样
- 在传递值类型和传递引用类型的时候,传递的方式不一样。值类型我们称之为值传递,引用类型我们称之为引用传递
常见值类型和引用类型:
- 值类型:int double bool char decimal struct enum
- 引用类型:string 自定义类 数组
存储:
- 值类型存储在内存的栈中
- 引用类型存储在内存的堆中