您的位置:首页 > 职场人生

黑马程序员--面向对象基础知识学习笔记

2013-03-02 03:44 726 查看
--------------------------Windows Phone 7手机开发.Net培训</a>、期待与您交流! -----------------------


面向对象基础知识学习笔记


1.类是抽象的,对象是具体的,按钮就是类,摸某个按钮就是对象,对象是类的实例化,类不占内存,对象才占内存。字段是类的状态,方法是类能够执行的动作。类之间可以有继承关系,子类继承父类的方法和属性,子类只需要定义自己特有的字段方法。

2.面向对象的三个属特性:封装,继承,多态。C#中支持单继承,即只能从一个类继承,

继承:是传递的,如果C继承了B,并且B继承了A那么C继承在B中声明的public和protected成员的同时也继承了A中声明的public和protected成员。派生类是对基类的扩展,派生类可以增加自己新的成员,但是不能对对已继承的成员进行删除,只能不予使用。基类可以定义自身成员的访问权限,且可以通过定义虚方法,虚属性使他的派生类可以重载这些成员,从而实现类的多态性。

多态性:是指同一操作作用于不同类的实例,这些类进行不同的解释,从而产生不同的结果的现象。在C#中有两种多态性,一种是编译时的多态性,这种多态性是通过函数的重载实现的;另一种多态性是运行时的多态性,这种多态性是通过虚成员方法实现的,运行时的多态性是指系统在编译时不确定选用哪个重载函数,而是直到系统运行时才根据实际情况采用哪个重载函数。面向对象在继承时,当派生类和基类中同时定义了相同的成员时,派生类中的成员会覆盖基类中的成员。基类中的成员不能被删除,但是可以通过派生类覆盖基类成员的方法把基类中不希望被执行的方法“屏蔽掉”。基类中的成员可以被隐藏,但是派生类还是可以通过base关键字来访问。

3.访问级别的用处在于控制成员在哪些地方可以被访问,这样达到了面向对象中封装的目的。

4.为什么要用属性并将字段设为private而不直接将字段设为public

Public字段和属性的区别是属性可以进行非法设置值的判断,可以设置为只读。属性是为了保护与之相对应的字段,保证对字段的读取和赋值符合要求。

例:private int age;

Public int Age{set{if(value<0){return;}this.age=value;} get{return this.age}}//Age中没有保存数据,都是保存到了age中。

当我们实例化一个类时,系统会自动对这个类的属性进行初始化,数值类型初始化为0/0.0;string类型初始化为:null,char类型初始化为\0;

5.如果属性中没有非法值的校验,可以用简写的方式,直接声明一个属性,直接set;get;编译器会自动生成一个private字段和set,get代码块;

6.只有new是才会产生一个对象,c#中的对象相当于一个指针,这里成为引用。

7.Int ,datetime,bool,char等类型都是属于值类型,赋值时是传递拷贝,普通对象则是引用类型,赋值时传递引用。

8.构造函数是用来创建对象的特殊函数,创建对象的同时对其进行一些初始化,函数名和类名一样,没有返回值,连void都不用。构造函数可以有参数,new对象时传递参数即可,构造函数可以重载,如果不指定构造函数,则类有一个默认的无参构造函数,如果指定了构造函数,则不再有默认的无参构造函数。构造函数和析构函数不能被继承。

9.Object类是所有类的基类,一个object类指向什么类都可以,没有指定父类,那么父类就是object。

10.Const常量:如果定义了public const常量,则在调用时不需要new一个对象再来调这个常量。例:Math对象中的PI,如果使用常量PI,可以直接Math.PI,不用先new一个Math对象。

11.不能被实例化的类称为静态类,静态类一般用来实现一些函数库。

12.在一个类中定义变量或方法时,没有写访问修饰符,那么默认的默认的访问修饰符为private。在类这个级别,不写访问修饰符默认为internal。

13.在定义类中的成员时,可以用virtual关键字,virtual关键字用于修饰方法或属性的声明,被virtual关键字修饰的方法或属性被称作虚拟成员,虚拟成员的实现可由派生类中的重写成员更改,不能将virtual修饰符和static,abstract,override等修饰符一起使用,virtual用于修饰虚函数,对于虚函数它的执行方式可以被派生类改变,这种改变是通过重载实现的。

14.Override重载用于修饰重载基类中的虚函数的函数。

15.Abstract用来修饰抽象类或成员,如果是抽象类说明该类是一个不完整的类,只声明,没有具体的实现,一般只能用来做其他类的基类而不能单独使用。

--------------------------Windows Phone 7手机开发.Net培训</a>、期待与您交流! -----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: