抽象思维之共性_抽象类的作用_接口的作用_抽象类和接口的区别(一)

     今天梁方明老师,给我们主要讲解了抽象思维的重要性、抽象类的作用、接口的作用、抽象类和接口的作用。下面我讲对今天所学的知识做个回顾,有不对的和不足的地方,还请大家指出。

     首先先从一个例子入手,冒泡法排序的实现过程是:

     第一种实现过程:

  public void BubleSort(int[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                for (int j = 0; j < array.Length-i-1; j++)
                {
                    if (array[j]>array[j+1])
                    {
                        int temp = array[j];
                        array[j] = array[j + 1];
                        array[j+1]=temp;
                    }
                }
              
            }
        }

     这个冒泡排序方法只能比较数组元素为整型的数组,如果想比较double,float,long *等类型的数组,则必须要对这个方法改写或者重载这个方法(重载不能在一个类中进行)。这段代码不能复用,这是这个方法的最大的弊端。有没有一种方法能够让冒泡排序能够复用呢?那么我们想一下各种类型的冒泡排序有哪些共性呢?

     一、抽象思维的重要性

     什么是抽象思维?我认为抽象思维就是在不同中找相同,在变化中找不变。把这些相同的和不变的东西理解为共性。而共性的东西是能够共用的。提高抽象思维的能力就是提高抽取不同事物的共性的能力。不同的事物不仅仅是包括现实中具体的事物。在这里,事物是一个广义的概念,还包括各种方法中的共性部分。

     再来讨论一下上面的冒泡排序的例子,对于不同的数据类型,进行冒泡排序时,它们的排序方法中哪些是相同的呢?哪些是不同的呢?通过思考,我们发现,不同的部分仅在于比较部分,即array[j]>array[j+1]。如果我们想以person类中的age字段来对person对象排序,那么我们的比较就是array[j].age>array[j+1].age。对于这个方法中的不同部分和相同部分,我们应该分别抽取出来。由于各种数据类型的比较方法不同,所以比较方法我们可以定义为抽象方法。需要进行比较的类继承这个抽象类,重写这个抽象方法。从而,冒泡排序的共性部分能够复用。

     因此,冒泡排序方法应该改写为:

     

posted @ 2008-08-31 22:11  IT-CEO  阅读(446)  评论(0编辑  收藏  举报