面向对象三要素: 封装 继承 多态
封装体现在成员访问级别上 包括: public private internal protected 构造函数重载也体现了封装的特性。
private 与 public的区别是: private只有类内成员可以访问, public 任何地方都可以访问
一般情况下 字段都设为private 方法有选择的设为public 在内部通过public方法来控制对字段的修改然后可以在外部通过public方法来修改字段值。
属性
属性开头字母大写,字段开头字母小写
字段与属性的区别:属性可以内部控制取值,字段只能通过访问级别来控制,控制非常有限,要不能在外部修改,要不不能 一般两者配合使用
属性的get set可以为空 此时编译器自动完成私有字段的生成和set get 代码块。
类 变量名 = new 对象;
对象引用
c#中有两种类型,一种是值类型,一种是引用类型
int datetime bool char 等类型属于值类型,赋值的时候是传递拷贝
普通的对象则是引用类型,赋值的时候是传递引用。函数之间的传递也是引用传递。
构造函数
构造函数是用来创建对象的特殊函数,函数名和类名一样,没有返回值,不用void关键字
名字与类相同,没有返回值其他跟类函数一样。
构造函数意义: 用来创建对象,并且对对象进行初始化。
继承
格式: class 子类:父类
c#中派生类只能有一个基类
定义一个类从其他类派生时,派生类隐式获得基类的除构造函数和析构函数以外的所有成员。 因此,派生类可以重用基类中的代码而无需重新实现这些代码。 可以在派生类中添加更多成员。 派生类以这种方式扩展基类的功能。
构造函数和析构函数不能继承
当基类中编写构造函数时,派生类没有指定调用构造哪个构造函数时,会寻找无参的构造函数,如果没有则报错,另外无论调用派生类中的哪个构造函数都是寻找无参的那个基类构造函数,而非参数匹配。
c#所有的类都直接或间接继承自object类
常量 静态成员
常量一旦声明就不可改变 常量名要大写
全局变量 static类变量
不用new就能调用的方法:static方法, 在static方法中可以调用其他static成员,但是不能调用非static成员.在非static方法中可以调用static成员.
静态类,不用new的类就是静态类 不能实例化 一般用来实现一些函数库 console类就是静态类 无构造函数 所以不能实例化 也不能继承
tips:不能直接new的类有两种: 一种是静态函数,一种是非静态函数 但是构造函数为私有(主要是为了不让new但是又能够继承)
静态类的主要功能如下:
它们仅包含静态成员。
它们不能被实例化。
它们是密封的。
它们不能包含实例构造函数(C# 编程指南)。
静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。
如果创建了该类的任何实例,不能使用实例来访问静态成员。
命名空间
如果要使用的类和当前的类不在同一个namespace,则需要添加using引用. 同一个文件夹下的namespace允许不一样,可以修改
索引器
格式
访问类型 返回值类型 this[参数]
{
set{赋值操作}; get{取值操作}
}
可以只有set 或者 只有get 索引也可以重载 可以带多个参数.