参与过
http://expert.csdn.net/Expert/topic/2064/2064895.xml?temp=.8615991
的朋友进来领分,呵呵。
如果哥们没过足瘾,可以在这里继续讨论。

解决方案 »

  1.   

    ps:我的qq:38009009
    msn:[email protected]
    很高兴结识各位朋友。
      

  2.   

    里面很多人连多态的概念都没有搞懂就乱起哄,这样会让别人误解的,老外看了会笑掉大牙的。其实道理都非常简单,两个关键字override和overload;
    override是覆盖基类虚方法和纯虚函数的一个关键字,用它可以实现多态。可以这么想,一个形状类为一个抽象类,我们肯定想把它Paint到屏幕上,但是对于形状可以有很多很多中,比如圆,正方形,三角形这些,我们可以定义一个抽象类,它具有这些不同形状的相同性质,比如都有一个Paint方法,然后我们再在派生类中覆盖Paint方法,写出相信的Paint方法的代码,那么对于我们后面使用只需要声明一个抽象类对象,但是却去创建一个派生类对象(你创建圆的派生类对象)调用paint方法的时候就是调用派生类对象的方法。
    而overload紧紧就是简单的函数重载关键字,只需要记住,只要是同名函数,参数类型或者参数数量不同,在两个函数的结尾加上overload关键字,给两个函数相应的实现,你在调用函数的时候就会调用相应的函数了!
    这个关键字更加深层次的解释我就不再赘述了。麻烦!
      

  3.   

    我发现怎么大家搞了半天还没弄懂overload 与 override的区别overload 就不用讨论了吧, 白痴都可明白的, 通俗一点就是一种方法多种实现, 它是一种平级的关系, 跟类没有根本的或直接的关系, 下面就是重载
    procedure Hello(AStr: string); overload;
    procedure Hello(AStr1, Astr2: string); overload;
    procedure Hello(AStr1, Astr2, AStr3: string); overload;
    override  说法也有很多种,覆盖,重置,也有讲重载的(我认为这样翻译也没错, 虽然这个词被 overload占了),它在面向对象中是一种扬弃的思想, 就是弃其糟粕, 取其精华。 父亲给儿子的, 儿子可以取舍, 就是这种观点 
    它跟方法怎么继承没多大关系(可能用词不好), 继承是通过Inherited来实现 , 它最大的体现就在动态联编上
    大家分几种情况来练习一下, 首先类的定义如下7种, 类的实现部分在最后, 我相信通过这个练习大家基本上都可以弄懂了
    1。
      TAnimal = class
      public
        procedure Shout;
      end;  TDog = class(TAnimal)
      public
      end;
    2。
      TAnimal = class
      public
        procedure Shout;
      end;  TDog = class(TAnimal)
      public
        procedure Shout;
      end;
    3。
      TAnimal = class
      public
        procedure Shout;
      end;  TDog = class(TAnimal)
      public
        procedure Shout; overload;
      end;
    4。//这个实际上是通不过的
      TAnimal = class
      public
        procedure Shout;
      end;  TDog = class(TAnimal)
      public
        procedure Shout; override;
      end;5。
      TAnimal = class
      public
        procedure Shout; virtual;
      end;  TDog = class(TAnimal)
      public
        procedure Shout; 
      end;
    6。
      TAnimal = class
      public
        procedure Shout; virtual;
      end;  TDog = class(TAnimal)
      public
        procedure Shout; overload;
      end;
    7。
      TAnimal = class
      public
        procedure Shout; virtual;
      end;  TDog = class(TAnimal)
      public
        procedure Shout; override;
      end;最后类的实现部分如下procedure TAnimal.Shout;
    begin
      ShowMessage('I am a animal');
    end;procedure TDog.Shout;
    begin
      ShowMessage('I am a Dog');
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      dog: TDog;
    begin
      dog := TDog.Create;
      dog.Shout;
      dog.Free;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      dog: TAnimal;
    begin
      dog := TDog.Create;
      dog.Shout;
      dog.Free;
    end;大家试试吧唉又浪费我一个小时
      

  4.   

    to:DWGZ() ,从大家的回复来看,我觉得大家都理解其中的道理,只是我们有的时候表达自己思想的时候有些&*(&*(, 不然我上一个帖子也不会结。
    这个帖子是散分用的,呵呵。
    非常感谢你的总结!
      

  5.   

    呵呵,FrameSniper(凤凰是否真的能够涅磐?) ,你做了突出的贡献,所以一定会给你多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多分的。