你的位置:首页 > ASP.net教程

[ASP.net教程]面向对象基础进阶02


一:面向对象的三大特征

封装,继承,多态

封装

1:封装的概念及作用

     *通过使用private和public修饰符来修饰类的成员(字段,属性,方法等)这样有效的使私有数据和方法不被外界访问,这种使用特性就是封装;

     *一个属性,一个方法也是封装,类是对属性和方法的封装;

     *封装是面向对象中的一个重要特征,面向对象的三个重要特征为:封装,继承,多态;

     *作用<模块化和数据隐藏>

2:类是模版,确定的对象将会拥有的特征(属性)和行为(方法);任何对象将会属于一个类中;

3:对象是以类为模版而创建的,是类的实例化,具体化;

4:面向对象的好处

      *封装使得开发人员更加关注自己的需求;

      *一个类定义之后可以多次使用,避免重复赋值;

5:类试图 对于类的总体结构的展示;类(右键-----查看类图)

6:类的祖先(object)

      *Object类是所有类的父类(祖先类),因此任何一个类都可以转换成object类型;

      *可以将任何类型的值赋予object类型的变量;

装箱:将值类型的变量转换为<object>对象的过程叫做装箱;

拆箱:将<object>对象类型的变量转换为值类型的过程叫做拆箱;

wps1FA0.tmp

继承

     *一个类继承另一个类,第一个类叫做子类,另一个叫做父类,子类继承父类,即子类就拥有了父类的属性和方法,可以重写<override>父类的方法和属性,同时子类也可以编辑自己的属性和方法。<Object类>

     *子类不能继承父类的私有成员

     *子类只能有一个父类,但是作为父类的类可以是多个子类的父类。

1:关键字Virtual

   Virtual关键字用于指定属性或方法在派生类中重写. 默认情况下,派生类从其基类继承属性和方法,如果继承的属性或方法需要在派生类中有不同的行为,则可以重写它,即可以在派生类中定义该属性或方法的新实现,这时在基类中该属性或方法必须用virtual关键字修饰.virtual关键字用于指定属性或方法时可以在派生类中重写.具有virtual关键字的方法或属性被称作虚拟成员.
   在基类(父类)中用virtual修饰符声明一个虚方法,然后在在派生类(子类)中用override修饰符覆盖基类虚方法。表明是对基类的虚方法重载。这种优势在于它可以在程序运行时再决定调用哪一个方法,这就是所谓的“运行时多态”,或者称动态绑定。

class A                          {                               public virtual void F(){}               }                                                          class B:A                         {                               public override void F(){}              }

多态  <编译时多态,运行时多态>

   *和重载的定义一样,可以这样说重载也多态的一种。

   *定义类的继承发生在多个类之间,而类的多态发生在同一个类上,在一个类中可以定义多个同名方法,只要确定了它们的参数个数和类型不同。

理解下面这段话就了解了多态.

wps91C9.tmp

覆盖: 就是子类有和父类重名的方法和属性,此时父类的方法就被子类的覆盖掉了。相当于修改父类的方法。

二:对象数据类型与对象销毁

1:基本数据类型{int,double,bool.....},值类型;

  引用数据类型{数组,对象,string},对象类型;

2: *引用类型变量传递时,将自己的内存地址赋给新变量{指针};

   *值类型变量传递时,将自己复制一份;

这里值类型保存在栈里面,而引用类型,一部分保存在堆里面,一部分保存在栈里面.

3:ref关键字

   可以将值类型变量按照引用方式传递;{实际开发中不建议经常使用ref关键字}

   引用传参,必须进行初始化,

4:out关键字

   可以让方法有多个返回值,侧重输出,引用传参,可以不进行初始化,但是必须在方法里面进行赋值。<return多个返回值的方法里面>

5: Params:当需要多个参数时,才会用到。数组类型参数。

wps938F.tmp

6:对象的销毁

  垃圾回收机制(GC)

   *.net虚拟机特有的机制,自动运行,并检查对象的状态;

   *发现对象不被引用时,会将其释放所占空间;

   *在实际的应用中我们可以自己调用GC来帮助我们清理一些我们不需要的变量和字段。

三:非泛型集合

1:ArrayList是一个长度可变的“数组”,通常成为集合,类似于数组的结构,其中最大的特点是:可以自由的扩展元素个数;

2:ArrayList集合的特点

   *元素都被转换成object类型

   *使用Add方法可以随意添加元素,无个数限制;

   *使用Remove方法可以删除指定元素,元素删除后索引自动调整;

   *通过索引访问元素,元素取出的时候需要强制转换成特定数据类型;

3:Arraylist的具体插入,删除代码;

wps98CB.tmp

4:ICollection<T>泛型的知识

   * IList<T>继承自ICollection<T>,ICollection<T>继承自IEnumerable<T>,IEnumerable<T>继承自IEnumerable

所以List<T>实现了IList<T>接口,也就是实现了IEnumerable接口
   * IEnumerable<T>是IEnumerable接口的泛型版本。使用泛型,不会强行对值类型进行装箱和拆箱,或引用类型进行向下强制类型转换,使程序性能提高。泛型定义的变量有类型限制,所以泛型提高了程序的类型安全。  泛型还提高了代码的重用性。

四:泛型集合list<T>与Dictionary的使用

1:List<T>使用前的准备工作

  *引入命名空间:System.Collections.Generic

  *确定存储类型:List<Student> student=new List<student>();

常用方法

  *添加元素:Add(<T>);

  *删除元素:RemoveAt(索引);

  *元素个数:count

遍历集合

  Foreach(Student stu in students)  {  Console.writeline(stu.studentName);  }

2:泛型集合的最大特征:严格约束集合内的元素类型;

3:集合初始化器

  创建集合对象时直接初始化,非常类似与数组;

4:Dictionary<k,v>通常称为字典

   *<k,v>约束集合中的元素类型

   *编译时检查类型约束;

   *无需装箱拆箱操作

   *与哈希表操作类视

wps70F1.tmp

wps7102.tmp