我们在这里谈谈面向对象编程OOP的一些基础知识:
常用知识浏览
内部类 只能在当前项目中访问其内容
抽象类 只能继承不能实例化
密封类 可以实例化,不能被继承
公共类 可以被所有代码访问
接口默认为内部的 可以设置成Public
abstract、sealed只能用于类 不能用于接口 因为接口不包含实现代码 不能实例化接口 只能被继承
base、this都是构造函数初始化器
类库项目编译以后就能作为dll类型添加引用
接口不能包含字段 静态成员 常量 构造函数和析构函数
接口用于类 抽象类用于对象
结构类型是值类型 类是引用类型
用static声明的成员是类成员 而不是实例成员
利用自动属性可以用简化的语法声明属性:public string name{get;set;}
属性是访问对象状态(字段数据)的首选方式 可以用自动属性 定义自动属性必须包含两个访问器 访问器不用添加实现代码 C#编译器会自动生成私有字段存储属性 并在访问器中使用
1.类
类的话拿现实生活中的比喻就像一个汽车公司的所以汽车的公共制造模板,里面包含了其旗下所有牌子汽车会用到的零件和组装方法,你要生产辆具体的汽车,就可以用这个模板中的内容,例如轮胎、框架、方向盘等,这就是类的实例化(对象),实例化的过程就像你指定轮胎是什么牌子啊,轮胎大小等,类实例化生成具体的对象。
2.对象
对象就是一个类的实例,初始化时给类中的字段或者属性赋值,就是在定义对象的状态,一旦初始化完成就生成了一个具体的(类实例)对象,就可以通过对象调用类的实例方法了。
对象的生命周期:
初始化对象:使用类的构造函数初始化对象,如果不在类中定义构造函数,C#编译器就会调用默认的构造函数生成对象。
对象的使用阶段:这个阶段user就可以使用对象做一些开心有用的事情了
对象的析构阶段:对象使用完,为了释放内存,可以提供析构函数,当然系统也为你提供好了默认的析构函数。
C#和.Net中一切皆对象,C#是一种强类型化的语言。
3.类的继承
C#中规定一个类只能继承一个直接基类,但是可以继承自多个接口,还可以实现多态性。就我简单的理解就是,你可以把一个派生类的对象赋值给基类(不管是否能实例化)类型的变量,然后就可以调用基类中的方法。(因为不是所有的类都能实例化,要调用不能实例化的基类的方法可以利用多态性,多态性在开发阶段也经常用到,比如可以让对象的集合操作更加方便,你可以定义一个基类集合,但是可以在集合中放入基类或者其派生类的对象)
4.对象的关系
对象之间有两种关系:
包含关系:对象中包含对象,这个我个人用的不是太多
集合关系:定义一个同类型的对象集合,这里可以灵活使用多态性,开发中使用较多
5.类的成员
5.1 字段
5.2 属性
5.3 方法(函数)
字段:字段用来存储对象的状态,也就是对象中包含的数据,默认是私有的。字段的声明和普通变量的声明方式相同,但是可以给其提供可访问修饰符,来控制其访问状态。例如:private int age;私有的字段一般只能通过属性来访问。可以给字段指定初始值,也可以在构造函数中给其赋值。
属性:属性一般用来提供外部代码访问对象的状态(也就是私有字段),对象包含两个访问器,get,set,一个用于访问对象状态,一个用于改变对象状态,这里可以使用自动属性。
方法:对对象中的数据执行的一系列操作