关于父类与子类的类型转换(TStrings与TStringList)
2009-04-11 10:10
260 查看
//关于父类与子类的类型转换: procedure TForm1.FormCreate(Sender: TObject); var List1: TStrings; List2: TStringList; {TStringList 是 TStrings 的子类} begin List1 := TStringList.Create; {List1 只能通过其子类实现} //List1 := TStrings.Create; {不能这样建立, 因为 TStrings 是抽象类, 不能自己实现} List2 := TStringList.Create; {TStrings 里没有排序方法 Sort} //List1.Sort; {所以这样不行} List2.Sort; {List2 所属的 TStringList 有这个方法} {但可以把 List1 转换一下} TStringList(List1).Sort; {这就没问题了} {但如果把 List2 转为 TStrings, 那 List2 也就丢失了 Sort} //TStrings(List2).Sort; {所以这样不行} List1.Free; List2.Free; end;
//为什么要那个抽象的父类? 答案有很多, 其中之一就是为了实现多态. 譬如: procedure TForm1.FormCreate(Sender: TObject); var stream: TStream; {这是很多流类的祖先, 也是抽象类; 只能通过其子类来实例化} begin {可以用 TMemoryStream 来实现 stream} stream := TMemoryStream.Create; {...} stream.Free; {也可以用 TFileStream 来实现 stream} stream := TFileStream.Create('c:/temp/Test.dat', fmCreate); {...} stream.Free; {不同的实现会让 stream 拥有不同而又相似的功能} end;
[/code]
相关文章推荐
- Java 父类与子类 类型转换
- C++ 智能指针类型转换(父类->子类,子类->父类)
- 关于父类子类转换的小记录
- Java初涉之2--父类和子类的类型转换
- Java中父类和子类的类型转换解惑
- 关于子类与父类的转换, 还有多态的说明 - 回复 "靳承柱" 和 "志成" 的问题
- java 父类、子类 类型转换【父类不能转为子类】
- 关于继承(子类对象与父类对象【相互转换】的过程)
- 5.1 父类和子类的类型转换总结
- 关于IList类型与IList<T>在运行时类型转换失败的问题
- 关于C++中子类调用父类方法的一个问题
- 关于C++中的char*与wchar_t*这两种类型的相互转换
- java类继承总结一 父类类型与子类类型之间的转化问题(转)
- 父类到子类的转换
- 关于list转换成json报错和小实例
- 关于int类型指针和char类型指针相互转换问题
- BOOST库 之 智能指针的类型转换 (基类 与 子类之间智能指针的转换)(未完成)
- 关于“用父类创建对象而用子类初始化”的理解
- java中关于String类型和double,int类型之间的转换
- 关于日期类型转换的标准SQL