delphi的类及其对象
     一  概述
             其实类只是复杂的数据结构。这种数据结构可以有她的实体那就是对象。但要区分好类的静态数据与对象数据区别,类方法与对象方法的区别。前者是类所有对象共享,后者是对象特有。
    二 类的声明及对象的定义
           在delphi里有两类类,一种是继承自内建类,一种是自定义或继承自自定义类,这两者不仅声明的方式不一样,内存管理方面也不一样。
                1  a
                         继承自内建类的类的声明
                        type myclass=class(内建类)
                                  
                               end;
                        或  
                                     type myclass=class//默认继承自 T OBJECT
                              
                               end; 
                    b
                           继承自内建类对象的构造:通过create方法返回一个指向对象实体的指针。
                        继承自内建类对象的析构  有两种方法 destroy 与free
                              destroy 只是把对象的头指针指向空,但实体的空间并没有被释放掉。free就可以完全把空间释放掉。
                           
              2自定义类的声明
                       type myclass=object(parentclass)
 
                                 end;
                    或 完全自定义
                            type myclass=object     
                          
                                       end;
               自定义类的对象若不自定义构造函数则只是一般的变量,在编译时动态分配。
         三   delphi对类成员的封装等级
              1 private
                  只在该单元的该类中可见
            2  protected
                 除在该单元的本类内可见外,其子类在也可见。//对象应该不可见
           3  public
              任何引用该类的地方都可见。包括该类的对象。
         4   published
               与public差不多,但在对象监视器内可见
        5 automated
         也与 public差不多
   四  类的继承
         1
            父类被子类继承后再子类中有块区域与子类中的成员不再一个层次上,虽然子类可覆盖父类的成员,但其实父类中的成员是存在的。
      2    方法的修饰符
默认情况下是static (此修饰符修饰的方法不可被子类覆盖),还有 virtual,dynamic(此修饰符修饰的方法可被子类覆盖)修饰符。
             virtual,dynamic修饰符的区别:使用 virtual修饰符修饰的方法,当子类中的方法覆盖时,效率比较高,而dynamic修饰的方法占空间少。所以当父类中有大量需要子类重载,但重载的机会又比较小时用dynamic修饰。
    3 override(覆盖)
      覆盖时不仅要参数类型要一致,连返回值的也要一样。只是可以修改内部方法。父类中有virual修饰的方法但子类不一定要覆盖,且无论该子类有没有覆盖,该子类的子类都还可以再覆盖。
   EG:override的例子
          type myclass1=class
                  function myfunc;virtual;//说明该方法可被覆盖
              end;
                  
           type      myclass2=class(myclass1)
                      function myfunction;override;   //覆盖了父类中同名方法
                end;
     四 overload 及 重定义
            重定义是虽然父类中有被virual修饰的方法,在子类中还可以写个同名的方法,但不override
           overload 是多态:在同一个类内,同名的几个函数,有不同的参数。以相应不同的要求。
 
                myfunction(a:integer);overload;
                myfunction(a:string);overload;
                myfunction(a:float);overload;
   五  类方法
          delphi中不支持类成员但支持类函数,就是在方法前加class在不同的对象中就可共享次方法。
           class function staticfun;//类方法
  六 纯虚函数
     拥有此方法的类必定有多态的事实,因为它的子类必须实现这个纯虚函数。
        声明的方法
       function myfunc:virtual;abtract;