【C#学习记录】二、面向对象基础概念


学习视频地址:https://b23.tv/BV1FJ411W7e5

目录
  • 面向对象概念
    • 和面向过程的区别
    • 类的基本语法
    • 字段、属性、方法
    • 静态和非静态的区别
    • 构造函数
    • this关键字
    • 析构函数
    • 命名空间
  • 值类型和引用类型

面向对象概念

和面向过程的区别

面向过程:面向的是完成这件事的过程,强调的是完成这件事的动作

面向对象:找个对象帮你做事

打开冰箱门

把大象塞进冰箱里

关闭冰箱门

冰箱门可以被打开

大象可以被塞进冰箱里

冰箱门可以被关闭

这里,面向过程一般是主动态,面向过程一般是被动态。

我们在代码中描述一个对象,描述对象的特征和行为(属性和方法)
对象必须是看得见摸得着的。

我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来这个概念。

类就是个母子,确定了对象应该具有的属性和方法。

类的基本语法

[public] class 类名
{
	字段;//存储数据的
	属性;
	方法;//行为
}

写好了一个类之后,我们需要创建这个类的对象,那么,我们管创建这个类的对象过程称之为类的实例化。使用关键字 new。

this.表示当前这个类的对象

类是不占内存的,而对象是占内存的。

结构是面向过程的,类是面向对象的。结构不具备封装、继承、多态。

字段、属性、方法

属性的作用就是保护字段,对字段的赋值和取值进行保护

field字段 method方法 properties属性

属性本质上就两个方法 get() set()

  • 既有get()又有set(),叫可读可写属性
  • 只有get()没有set(),叫只读属性
  • 没有get()只有set(),叫只写属性

静态和非静态的区别

  • 非静态类中,既可以有实例成员,也可以有静态成员

  • 在调用实例成员的时候,需要使用对象名.实例成员
    在调用静态成员的时候,需要使用类名.静态成员名
    总结:静态成员必须使用类名去调用,而实例成员使用对象名调用
    静态函数中,只能访问静态成员,不允许访问实例成员。
    实例函数中,既可以使用静态成员,也可以使用实例成员

构造函数

  1. 构造函数没有返回值,连void也不能写
  2. 构造函数的名称必须和类相同
  3. 如果没有指定构造函数,则自动生成一个无参的构造函数;如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。
  4. 创建对象的时候会运行构造函数。
  5. 构造函数可以重载。

this关键字

作用:

  1. 代表这个对象
  2. 显式地调用自己的构造函数

析构函数

当程序结束的时候 析构函数才执行
帮助我们释放资源
GC Garbage Collection

命名空间

用于解决类重名的问题,可以看作类的”文件夹“
如果在当前项目中没有这个类的命名空间,需要我们手动导入这个类所在的命名空间,有以下几种方式

  1. ALT+SHIFT+F10
  2. 手动写,using 命名空间
  3. 鼠标点

在一个项目内应用另一个项目

  1. 添加引用
  2. 引用命名空间

值类型和引用类型

区别

  1. 值类型和引用类型在内存上存储的地方不一样
  2. 在传递值类型和传递引用类型的时候,传递的方式不一样。值类型我们称之为值传递,引用类型我们称之为引用传递

常见值类型和引用类型:

  1. 值类型:int double bool char decimal struct enum
  2. 引用类型:string 自定义类 数组

存储:

  1. 值类型存储在内存的栈中
  2. 引用类型存储在内存的堆中

相关