首页 > 代码库 > C#面向对象基础
C#面向对象基础
面向对象不是取代面向过程的。类、对象。“人”是类,“张三”是“人”这个类的对象。类是抽象的,对象是具体的。按钮就是类,某个按钮就是对象。对象可以叫做类的实例(Instance)。字段Field(和某个对象相关的变量),字段就是类的状态(不同的对象可能不一样的状态就是字段)。人这个类有姓名、年龄、身高等字段。类不占内存,对象才占内存。字段描述对象特点的数据。方法Method(函数),方法就是类能够执行的动作,比如问好、吃饭等。
类的继承,类之间可以有继承关系,比如“电脑”类可以从“电器”类继承,这样的好处是“电脑”类只需要定义自己特有的字段、方法就可以,也就是只要定义内存大小、CPU型号这些字段或者弹出光驱等方法就可以。父类(Parent)、基类(Base)。电脑类是电器类的子类(ChildClass)。重用。父类有的子类都有。
面向对象的三个特性:封装、继承、多态。
类就是把一系列相关的变量(状态)、行为定义为一个整体。字段记录的就是这个对象相关的数据。
字段、方法、属性都可以叫做类的成员Member,它们都需要定义访问级别。访问级别的用处在于控制成员在哪些地方可以被访问,这样达到面向对象中“封装”的目的。几个访问级别:public(任何地方都可以访问);private(只能由本类中的成员访问)。还有internal、protected两个级别。永远不要把字段public,字段一般都是private。字段开头小写
int、decimal、bool、byte、enum等基础类型(值类型)是传递拷贝;对象(引用类型)则是传递引用。因为基础类型不怎么占内存,而对象则比较占内存。
函数间传递对象。为对象变量重新赋值。p2=p1是让p2指向p1指向的对象。
属性开头字母大写,字段开头字母小写。只用set或者只用get就可以定义只读或者只写属性(只写的不常见)。(.Net3.x)简化set、get:public int Age{get;set;}。适合于set、get中没有特殊逻辑代码的情况。允许外部访问的值一定要声明为属性。字段和属性的区别是什么?属性看似字段、不是字段,可以进行非法值控制,可以设置只读。set、get块内部其实就是get_***、set_***方法。
不要在类定义中写多行代码,多行代码必须定义在方法中,只能在声明字段等地方调用一个有返回值的一行代码。
构造函数用来创建对象,并且可以在构造函数中对对象进行初始化。构造函数是用来创建对象的特殊函数,函数名和类名一样,没有返回值,连void都不用。构造函数可以有参数,new对象的时候传递函数参数即可。构造函数可以重载,也就是有多个参数不同的构造函数。如果不指定构造函数,则类有一个默认的无参构造函数。如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。
定义类的时候不指定父类,则父类是Object类。Object类是任何类的直接或者间接父类。所有类都是Object的子类。
()转换和as 转换的区别:如果转换失败()会报异常,而as则会返回null。
if (p1 is Chinese)//is运算符结果就是bool,表示是否是指定的类型。is用来判断变量指向的对象是否是指定的类型或者指定类型子类类型。as可以起到判断类型和转换的双重作用。
try catch。Exception ex 异常也是对象。Exception 类主要属性:Message、StackTrace。发生异常后程序默认就退出了,try代码块中的后续代码不会被执行。catch以后的代码则会继续执行。扔出自己的异常,扔:throw,抓住:catch。
const常量。常量名要大写。一定不会变化的值才能声明为常量。不用new就能用的方法:static方法,static方法其实就是普通函数。在static成员中可以调用其他static成员,但是不能调用非static成员。在非static成员中可以调用static成员。静态类,不能被new的类就是静态类。静态类一般用来实现一些函数库。sealed不能被继承。
C#面向对象基础