假如我的代码如下:
type
  a=class
    public
      constructor create(s:string);
  b=class(a)
   public
      constructor create(s:string);
end;  var
 k:b;
 k:=t.create('ss');
  .
  .
  .
 请问我如何在创建实例k时,执行类b的父类a的的构造函数,并将一参数传到其父类中?

解决方案 »

  1.   

    type
      a=class
        public
          constructor create(s:string);virtual;
      b=class(a)
       public
          constructor create(s:string);override;
    end;   constructor b.create(s:string);
    begin
      inherited;执行b的父类a的的构造函数
      //SomeCode 执行类b的代码.  
    end;
      

  2.   

    constructor b.Create(S: string);
    begin
      inherited Create(S);  
    end;
      

  3.   

    同意: louislingjjw(云 意) 的代码!
      

  4.   

    更正楼主的一个错误Override 叫覆盖或也叫重写,是实现多态的方式Overload 才叫做重载,是Delphi中的一种语言特性,和多态以及对象没有任何的关系
      

  5.   

    同意KaiYun97的观点,直接将父类的构造函数申明成虚拟的,然后在子类中Override就可以了这样,当你按Ctrl+Shift+C时,IDE会自动给你加上Inherited!既然编译器提供了识别多态的特性,为什么不用呢,何苦自己在加一个Inherited(XXX)呢!?
      

  6.   

    FrameSniper(★框架狙击手★№2)
    说得很正确