回顾练习
编写一个程序,定义结构(有姓名,年龄,手机号码三个字段),再定义一个一维数组,把结构作为数组元素类型,存入数据,然后依次输出。
一.面向对象
1. 为什么要使用面向对象
- 我们可以将程序模块化,每个模块提供特定的功能这样每个模块都独立互不影响,可以提高代码的复用性
- 面向对象就是继承、封装、多态
2. 什么是类
类是实际上创建对象的模板,每个对象都包含数据,每个对象都提供了处理和访问数据的方法
3. 类的基本结构
4. 练习
二.构造函数
1.构造函数的作用:构造函数会在类实例化对象的时候调用自己,一般用于初始化数据
2.构造方法的基本写法
构造函数中也可以调用对象中的方法,获取对象中的返回值存到对象的字段中
3. 属性和字段
4. 属性的特点:
- 访问属性和访问字段一样,当取得属性值的时候就会调用属性的get语句块,会执行get中的语句块,所以get需要一个访问值,类型就是属性值的类型,当我们给属性设置值的时候,就会调用属性中的set语句块,我们可以在set中的value值中获取到我们设置的值。
设置只读或者只写,如果我们给属性只设置get块那么就是只读,如如果只设置set块那么就是只写
5.匿名类型
定义:当我们不确定数据的类型的时候,可以使用关键字var声明变量,那么该变量的类型就是由初始化赋的值所决定的,如果赋的是字符串那么就是字符串类型,如果赋的是整数型那么就是整数类型
6. 类的继承
- 为什么需要继承?
- 很多类在项目中可能有很多相似的地方,使用类的继承可以提高代码的复用,减少冗余
- 使用继承的写法:
7. base关键字
- 当我们使用继承的时候,可能子类也有相同的属性和方法,但有的时候我们就想要使用父类中的属性和方法所以就使用base关键字,base表示的就是父类,我们可以通过base.属性名来获取父类中的属性
- base的第二种使用方式,将子类中的传进来的参数传递给父类的构造方法
8.虚函数(重写父类中的方法)
9. 抽象类
- 为什么要使用抽象类:
- 比如我们讲的怪物可能都有一技能的,也就是说都会有一个一技能攻击的方法,但是每个怪物的一技能都不一样,有时候在编写项目的时候可能忘记编写子类中一技能的方法,我们可以定义一个抽象父类,抽象类是一个不完整的模板,因为里面有抽象函数,抽象函数可以理解为一个没有函数体的函数,那么我们在使用继承的时候,会提示你编写攻击的函数,否则就会报错,这样可以更加规范我们代码的编写。
注意:抽象类是不能进行实例化
10.常见的访问修饰符
- public最高访问权限,允许同个或不同个的项目进行访问
- private只允许在类或结构中被访问
- internal只允许在同个项目中被访问
- protect只允许在同个类或者派生类或结构中被访问
11.密封类
当我们创建的类不想被继承的时候,使用sealed修饰符表示无法被继承
12.静态类和非静态类的区别
- 使用static修饰符修饰的是静态成员,没有使用static是非静态成员(实例化成员)
- 静态类中只可以有静态成员,不能有非静态成员非静态类中可以有静态成员和非静态成员
- 静态方法的调用只能通过类名.方法名,不能实例化一个对象使用对象.方法调用
13.readonly只读
- readonly只能在声明和构造函数中初始化赋值,在其他地方不能修改只能被读取不能被修改