procedure LoadFromFile(const FileName: string); virtual;
{Fills the list with the lines of text in a specified file}
procedure LoadFromStream(Stream: TStream); virtual;
{Fills the list with lines of text read from a stream}
procedure SaveToStream(Stream: TStream); virtual;
{Writes the value of the Text property to a stream object}
property Strings[Index: Integer]: string read Get write Put; default;
{References the strings in the list by their positions}
property Values[const Name: string]: string read GetValue write SetValue;
{Represents the value part of a string associated with a given Name, on strings with the form Name=Value.}
…
end;
从Tstrings的定义可以看出,它的大部分Protected和Public的方法都是虚方法或是抽象方法。(请Soul来补充一些,TstringList->TstringGridString)
2.3其他(请soul来补充)
如果你对多态还不明白的话,那请你记住多态的实质:
“相同的表达式,不同的操作”(就这么简单)
从OOP语言的实现来讲,多态就是使用基类的指针/引用来操作(派生类)对象,在运行期根据实际的对象,来执行不同的操作方法;或者换一种更形象的说法:由对象自己来决定自己操作方式,编译器只需下达做什么的命令(做什么what),而不要管怎么做(how),"怎么做"由为对象自己负责。这样就实现了接口和实现的分离,使接口重用变得可能。
其实多态也简单!那么使用多态应该注意什么呢?下面我的两点几点建议:
分析业务逻辑,然后把相关的事物抽象为“对象”,再用对象方法封装业务逻辑。把一些具有多态性的操作,在基类中声明为虚方法(virtual Method),对于在基类没有必要实现的就声明为抽象方法(virtual Abstract Method),然后在其派生类中再覆载它(Override),在使用的
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/