vr引擎设计-c#基础第八天

776 阅读6分钟

练习题1

编写一个程序,定义结构(有姓名,年龄,手机号码三个字段),再定义一个一维数组,把结构作为数组元素类型,存入数据,然后依次输出。

一、面向对象

1.为什么要使用面向对象编程

我们可以将程序模块块,进行模块划分,每个模块提供特定的功能,这样每个模块都是独立的,互不影响,比如我们创建一个动物类,规定了所有动物都有走路的动能,或者性别的属性等等,如果我们想创建一个动物,比如猫,这个时候我们可以使用该类中有的方法和字段,那如果想创建一个狗对象同样可以用该类生成,同样也会有类中的方法,但这时候狗中的方法和属性都是独立和猫中的方法和字段互不影响,我们从这里可以明显看到面向对象可以提高代码的复用性,我不需要重复的定义函数和变量。

2.类是什么?

类实际上是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法。

3.类的基本定义

image.png

4.根据类创建对象

image.png

5.练习

image.png

image.png

6.构造函数

1. 构造函数的作用

构造函数会在类构造对象的时候自动调用自己,我们一般用于初始化对象存储的数据,所以构造函数本质是用于初始化数据的函数

2. 构造函数的基本写法

构造函数是类中和类同名的一个方法,当创建对象的时候自动调用该方法,一般用于初始化数据 image.png 构造函数中也可以调用对象中的方法,获取对象中的返回值存到对象的字段中

image.png

3.属性和字段

1.字段

image.png

  1. 属性的定义

image.png

  1. 属性的特点
  • 访问属性和访问字段一样,当取得属性的值得时候,就会调用属性中的get块执行get块中的语句,所以get块需要一个返回值,类型就是属性的类型;当我们去给属性设置值得时候,就会调用属性中的set块,我们可以在set块中通过value访问到我们设置的值

image.png 设置只读或者只写,如果我们给属性只设置get块那么就是只读,如如果只设置set块那么就是只写

  1. 两个访问修饰符
  • public公开的的,访问最高权限
  • private私有的,只能在类或者结构体内部中使用

image.png

9.使用其他项目中的类

  1. 在本项目中引用其他项目中的命名空间,比如这里我们在demo01项目中引入_demo中的命名空间
  • 第一步 image.png
  • 第二步

image.png

  • 第三步

image.png 注意:想要使用其他项目中的命名空间中的类,那么该类的访问修饰符要设置为public公开的形式

8.匿名类型

当我们不确定数据的类型的时候,我们可以使用关键字var声明变量,那么该变量的类型就由初始化赋的值决定,如果赋的是字符串那么就是字符串类型
image.png

9.类的继承

1.为什么需要继承

很多类在项目中可能有相似的数据,比如在一个游戏中Boss类和小怪类Enemy这些类有很多相同的属性,比如血量,攻击值等,所以这个时候我们可以使用继承来让这两个类继承自同个类

2.实现继承的写法

image.png

3.base关键字

  • 当我们使用继承的时候,可能子类中也会有相同的属性和方法,但是有的时候我们就想使用父类中的属性和方法,这时候我们可以使用base关键字,base表示的就是父类,我们可以通过base.父类中的属性名来获取父类中的属性

image.png

  • base的第二个使用方式,将子类中的传进来的参数传递给父类的构造方法

image.png

10.虚函数(重写父类中的方法)

image.png

11.抽象类

1.为什么要有抽象类

比如我们讲的怪物可能都有一技能的,也就是说都会有一个一技能攻击的方法,但是每个怪物的一技能都不一样,有时候在编写项目的时候可能忘记编写子类中一技能的方法,我们可以定义一个抽象父类,抽象类是一个不完整的模板,因为里面有抽象函数,抽象函数可以理解为一个没有函数体的函数,那么我们在使用继承的时候,会提示你编写攻击的函数,否则就会报错,这样可以更加规范我们代码的编写。

image.png 定义一个派生类继承抽象类中的方法,这时候会提示你要重写min方法 image.png 直接点击提示,实现抽象类 image.png

12.常见访问修饰符的了解

  • public 访问的最高权限,允许在同个项目或不同的项目中被访问
  • private 只允许在类或结构中被访问
  • internal 只允许在同个项目中被访问
  • protected 只允许在同一个类或结构或者此类的派生类中被访问

13.密封类

当我们创建的类不想被继承的时候,我们可以在类前面加sealed修饰符表示该类无法被继承

image.png

14.其他修饰符

1.static 静态和非静态的区别:

  • 被static修饰的是静态成员,没有被static修饰的是非静态成员(实例成员)
  • 在静态类中可以有静态成员,也可以有非静态成员,但是静态类中只能有静态成员
  • 在类中,静态方法要调用的话只能通过类名.方法名,不能通过对象名.方法名调用

image.png

  • 在静态函数中只能访问静态成员的数据,不能访问非静态成员(实例成员)的数据 image.png
  • 实例函数中既可以使用静态成员也可以使用实例成员

2.readonly 只能在声明和构造函数中初始化赋值,在其他地方不能修改其值,只能被读取,不能被修改

image.png

15.练习题

  1. 练习1

image.png