关于override,inherid,搞不懂什么意思,作什么用的

解决方案 »

  1.   

    override 重载
    inherid  继承
      

  2.   

    你从TcustomEdit派生出了一个子类TMyEdit.
    并且需要重写Create方法.
    现在在Create方法中,首先要Inherited Create(Aowner).因为毕竟你的代码中只是做了一下你自己使用变量的初始化工作,其它大量的工作要VCL代你做.
    而如果你不将自己的Create方法override一下的话,如果需要将一个TMyEdit元件和其它元件一齐放入一个元件数组的话,Create调用将使用TcustomEdit的Create方法.通过override,你告诉系统,如果需要Create的话,就用我的.
      

  3.   

    楼上说了,相信你应该了解重载,继承的概念
    override   重载  // 简单地说就是子类方法重新改写父类方法
    inherited  继承  // 简单地说就是子类方法直接引用父类方法procedure yourproc(params: yourtype);override;//声明子类方法时加上override,表示子类将重载父类的方法
    procedure yourproc(params: yourtype);
    begin
      inherited; // 实现子类方法时加上inherited,表示子类直接继承父类的方法,如果是构造函数,inherited应写在子类方法的开始,析构函数则在结尾
      ...
    end;
      

  4.   

    你从TcustomEdit派生出了一个子类TMyEdit.
    并且需要重写Create方法.
    现在在Create方法中,首先要Inherited Create(Aowner).因为毕竟你的代码中只是做了一下你自己使用变量的初始化工作,其它大量的工作要VCL代你做.
    而如果你不将自己的Create方法override一下的话,如果需要将一个TMyEdit元件和其它元件一齐放入一个元件数组的话,Create调用将使用TcustomEdit的Create方法.通过override,你告诉系统,如果需要Create的话,就用我的.
      

  5.   

    这是oop的两个重要概念override 用于动态连编   正如:shaver() 说的,当然在父类的相同方法后要有关键字 vitual 
    inheride  是基于父类的继承  见 qybao(阿宝) (
      

  6.   

    理解oop的基本概念很重要啊!
      

  7.   

    楼上的几位已经说得不错了,我再补充一点  假设你定义了一新基类如下:
    type
      
      TClass1=Class
        private
          
        protected
          varStr:string;
          procedure Method001;dynamic
        public
          constructure Create;
    end;
     方法的实现如下:
     TClass1.Create;
     begin
       varStr:='this is the first class create method.';
     end;       
     
    TClass1.Method001;
     begin
     ///
     end;        TClass1.Method002;
     begin
      ///
     end;       
    而现在由于需要你要创建一个新的类,而却要拥有TClass1的所有可以继承的方法。那么构建后如下:
    type
      
      TClass1=Class
        private
          varStr:string;
        protected
          procedure Method001;override;
        public
          constructure Create;
    end;
     方法的实现如下:
     TClass2.Create;
     begin
       inherited Create;{注意了,在这儿如果你想让在对象创建时仍然使  varStr保持父类的值'this is the first class create method.'那么此处久的使用inherited关键字调用Create构造器的时候调用父类的构造器方法实现的内容。反之则不。}
     
     end;       
     
    TClass2.Method001;
     begin
       Inherited Method001;{合上述一样}
     end;        TClass2.Method002;
     begin
      ///
     end;