C#面向对象设计
第一章
类是对象的抽象化,对象是类的实例化。
静态类(只能使用静态字段、方法)(static)
使用:类.方法(字段)
普通类(皆可)
使用:创建对象,对象.方法(字段)
普通类和结构体(struct)的区别:
引用类型,值类型;
可赋初始值,不可;
可继承,不可;
默认private,默认public;
第二章
Ctrl+R+E 封装字段(字段变为属性)
(get:可访问性;set:可赋值)
作用:设定区间
重载 (同名不同参)(返回类型不能作为判断条件)
(同类)
作用:便于调用用途相近方法
构造函数 (同类名 无返回类型)
作用:为成员赋初始值
第三章
ArrayList类(有序集合)(类似一维数组)
using System.Collections(集合的命名空间)
转换类型
- as转换 转换失败返回null 转换方法:变量名= 原变量名 as 转换类型
- ()转换 转换失败报错 转换方法:变量名=(转换类型)原变量名
属性:
1容量:Capacity
2实际个数:Count
Ps:容量<实际个数 会自动增长至原容量的一倍
方法:(创建对象.方法)
1Add(对象)方法 逐个依次添加
2Insert(索引,对象)方法 插队
3Remove(对象)方法 移除
4RemoveAt(索引位置)方法 移除
5Clear()方法 清空所有元素
6Sort()方法 元素排序
7Reverse() 元素顺序反转
8TrimToSize() 使容量数=实际个数
HashTable类(无序集合)(类似二维数组)
属性:
1Keys 获取键的信息
2Values 获取值的信息
3Count 获取键值对的数目
方法:
1Add(键,值)
2Remove(指定键)
3Clear()
4ContainsKey(键) 是否存在指定键
5ContainsValues(值) 是否存在指定值
对象[键]=值
第四章
泛型集合List(ArrayList升级版)
List<允许在泛型集合当中出现的指定类型> 变量名= new List<同上>
PS:不会默认转化为object类型;使用方式同ArrayList
泛型集合Dictionary(Hashtable升级版)
Dictionary<类型,类型>
第六章
继承:
子类:父类
PS:子类(派生类)拥有父类可被继承的字段、属性、方法。消除了代码冗余,提高了代码的重用性和扩展性,灵活性。
c#中子类会先调用父类的无参构造函数再调用自身的构造函数(若父类没有构造函数则提示错误)
this(成员(没有成员默认访问构造函数)):访问本类的成员(以及对应的构造函数)
base(成员):访问父类的成员(以及对应的构造函数)
is a实例化类(父类引用指向子类对象)(把子类看成父类):父类 变量名=new 子类();
object类(所有类的基类)(没有父类自动继承此类)
访问修饰符:
public:公有的,访问不受限制
private:私有的,只能本类访问
protected(★):受保护的,只能本类及子类访问
internal(♡):内部的,只限于本项目内成员访问
protected internal:内部受保护的,只限于本项目或子类访问
第七章
多态:隐藏,重写
- 隐藏:基类使用virtual定义虚方法,子类使用new关键字隐藏(第一步可省,不过编译器会发出警告)
- 重写(子类访问范围>父类访问范围):基类使用virtual定义虚方法,子类使用override重写
密封类(不许虚方法):sealed(类无法被继承)
密封方法:sealed只能与override一起使用(方法无法再次被重写)
第八章
抽象类:abstract
抽象方法:abstract;抽象类中;莫得方法体;子类重写
接口:interface(没有访问修饰符)(未实现的方法(没有方法体))