c#【8】面向对象

138 阅读3分钟

1、类

类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。 包含:【字段】、【属性】、【方法】、【构造函数】。

类的定义

image.png

根据类创建对象

image.png

构造函数

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

字段

image.png

属性

image.png image.png

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

2、使用其他项目中的类

image.png image.png image.png

3、匿名类型

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

4、类的继承

实现继承的写法

image.png

base关键字

  • 当我们使用继承的时候,可能子类中也会有相同的属性和方法,但是有的时候我们就想使用父类中的属性和方法,这时候我们可以使用base关键字,base表示的就是父类,我们可以通过base.父类中的属性名来获取父类中的属性 image.png
  • base的第二个使用方式,将子类中的传进来的参数传递给父类的构造方法 image.png

5、常见访问修饰符

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

6、虚方法 (重写父类中的方法)

image.png

7、抽象类:不能实例化,只能被继承

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

8、密封类

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

9、其他修饰符

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

  • 被static修饰的是静态成员,没有被static修饰的是非静态成员(实例成员)

  • 在静态类中可以有静态成员,也可以有非静态成员,但是静态类中只能有静态成员

  • 在类中,静态方法要调用的话只能通过类名.方法名,不能通过对象名.方法名调用 image.png

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

  • 实例函数中既可以使用静态成员也可以使用实例成员

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

image.png

练习题

image.png