1.1、什么是面向对象编程
-
面向对象编程是一种计算机编程结构,与面向过程编程相比,具有高重用性、灵活性和扩展性的优点。
-
C#语言是一种面向对象的编程语言,它的设计思想是将要解决的问题里面的相关对象分析总结出来,抽象出它特征和行为。
1.2、面向对象的三大特性:封装、继承、多态;
封装:把客观的事物封装成类,使用和修改方便;
继承:在写代码过程中会发现有些类有些方面很相似,这时候我们新建一个类来描述这种相似性,所有从这类衍生出来的类都有这种相似性,通过继承描述出各种不同的类之间的相似性。
多态:多态和继承是紧密相关的,是指同一个成员函数在不同的衍生类中有不同的行为,也就是描述了他们之间的区别。
1.3、类与对象的关系
类是一个抽象的概念,是一组具有相同特性和行为的对象集合。而对象是类的实例化,即类的实物表达。
对象是类的具体表达;而类则是对象的抽象表达。
1.4、类的定义
-
要使用类,必须先定义类
-
[访问修饰符] class 类名 { 类成员(常量、字段、构造函数、方法(函数)、属性、事件、索引器、运算符等)的定义; }
-
访问修饰符
类或类的成员都有关联的可访问性,它控制能够访问该成员的程序文本区域。C#有五种可访问修饰符。
可访问性 含义 private 私有的,访问仅限于此类 public 公开的,访问不受限制 protected 受保护的,访问仅限于此类和从此类派生的类 internal 程序集内部的,访问仅限于此程序 protected internal 由此声明的程序集或另一程序集派生的类中可以访问 -
1.5、创建对象
-
创建对象就是将类实例化,其过程本质是在内存中为对象分配存储空间,并对对象进行初始化。
-
C#使用关键字new创建对象
语法:类名 对象名=new 类名();
-
将类实例化一个对象后,可以通过对象访问类的字段,去读取、设置相应字段的值;还可通过对象访问类的方法,执行方法的功能。
-
2.1、类的成员
类有数据成员或方法成员,还可划分为实例成员和静态成员
-
字段(field)成员:是描述状态的数据成员
-
方法(method)成员:是描述操作的行为成员
-
静态(static)成员:用static关键字修饰的字段或函数成员
-
实例(instance)成员:没有用static关键字修饰的字段或函数成员
2.2、静态成员特征
-
静态成员必须通过static关键字定义,通过类名访问。
-
在内存中,一个静态字段只标识一个储存位置,无论创建了一个类的多少个实例,它的静态字段在内存中只占同一块区域。
-
静态方法不能作用于对象,即静态方法中不能直接使用实例成员,必须创建类的对象,通过对象名引用访问,但是可以直接访问本类的静态成员。
-
2.2、实例成员特征
-
实例成员不能添加static关键字定义,通过对象名访问。
-
类的实例成员属于类的对象所有,每创建一个类的对象,都在内存中为实例字段开辟了一块区域。类的每个对象,分别包含一组该类所有实例字段的副本。
-
类的实例方法直接作用于类的对象,在实例方法中可以直接访问本类的静态成员和实例成员。
-
调用完后会自动释放,节省内存空间。
3.1、构造函数的概念
构造函数是个特别的方法,用来初始化类的新建对象(对象存储的数据)。当访问一个类的时候,系统将 首先执行构造函数中的语句。
构造函数在创建类的对象时自动执行,即无论程序是否调用类的字段、属性或方法,构造函数都将在创建 对象时执行。
3.2、构造函数的语法
-
[访问修饰符] 构造函数名 (形参列表) { 初始化代码 }
-
各种类型的字段的默认值
类型 默认值 数值型(各种整数、小数) 0 char '0' boo l false 引用类型 null 4.1、方法重载:方法名称相同但参数不同,处理结果会自动执行对应的参数方法。方法重载跟返回值没有关系。
4.2、抽象类只能是单继承:一个子类只能继承一个父类(抽象类);接口可以多实现:一个类可以继承多个接口 如 子类:接口1,接口2,接口3.....多实现至接口。接口说是抽象类中的抽象类
4.3、接口和抽象类的共同点:都是提供方法去给子类实现的,子类都必须去实现其没有实现的成员。 这种实现方法叫方法重写。