M
mr0511
Unregistered / Unconfirmed
GUEST, unregistred user!
请帮我分析一下情况的不同之处。
父类中构造的函数
constructor TFather.Create(TheLogFileName: String);
子类有构造函数
constructor TSon.Create(TheLogFileName: String);
情形1: 父类造函数跟virtual关键字, 子类造函数跟override
情形2: 父类造函数跟virtual关键字, 子类造函数不跟任何关键字
情形3: 父类造函数不跟任何关键字, 子类造函数不跟不跟任何关键字
上面三种情形的子类构造函数的实现中, 第一句都是
inherited Create(TheLogFileName);
上面三种情形,编译都可以通过,只不过情形2有一个编译警告:
[Warning] ToriTCPUnit.pas(38): Method 'Create' hides virtual method of base type
上面三种情形的子类中的inherited Create(TheLogFileName);可被调用,是不是可以认为三种情形执行结果也一样呢?
请从类的设计角度分析,这三种情形有什么差别。谢谢!
父类中构造的函数
constructor TFather.Create(TheLogFileName: String);
子类有构造函数
constructor TSon.Create(TheLogFileName: String);
情形1: 父类造函数跟virtual关键字, 子类造函数跟override
情形2: 父类造函数跟virtual关键字, 子类造函数不跟任何关键字
情形3: 父类造函数不跟任何关键字, 子类造函数不跟不跟任何关键字
上面三种情形的子类构造函数的实现中, 第一句都是
inherited Create(TheLogFileName);
上面三种情形,编译都可以通过,只不过情形2有一个编译警告:
[Warning] ToriTCPUnit.pas(38): Method 'Create' hides virtual method of base type
上面三种情形的子类中的inherited Create(TheLogFileName);可被调用,是不是可以认为三种情形执行结果也一样呢?
请从类的设计角度分析,这三种情形有什么差别。谢谢!