文档章节

关于子类与父类的转换, 还有多态的说明 - 回复 "靳承柱" 和 "志成" 的问题

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 294
阅读 7
收藏 0
点赞 0
评论 0
问题来源: http://www.cnblogs.com/del/archive/2008/08/22/1002959.html#1294593

//关于父类与子类的类型转换:
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;

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/08/22/1273923.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
谈谈多态

概述 我们都知道面向对象有四个基本特性:抽象、封装、继承、多态。这四个特性,概括起来可以这么理解,抽象、封装、继承是多态的基础,多态是抽象、封装、继承的表现。多态,是Java中非常重...

Galy_绿 ⋅ 2016/07/11 ⋅ 0

Java基础进阶 第四天 抽象接口多态

今日任务: 1,能够独立使用抽象类 2,能够独立使用多态 3,能够独立使用接口 4,能够理解适配器设计模式 1. 抽象类 1.1. 抽象类的产生 需求:创建类描述猫和狗的行为; 猫的行为:抓老鼠;吃...

Villain丶Cc ⋅ 06/03 ⋅ 0

JVM--再谈继承与多态

此文试图从JVM层面深刻剖析Java中的继承与多态,知识面覆盖class字节码文件,对象的内存布局,JVM的内存区域、分派,方法表等相关知识,内容整合于大量博客,知乎,书籍,并加上博主自己的理...

championhengyi ⋅ 01/10 ⋅ 0

《疯狂java讲义2》读书笔记——面向对象的三大特性之一:多态

多态 java引用变量有两个类型:一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型与运行时类型不一致,...

我的夏幸运 ⋅ 2016/11/07 ⋅ 0

Java基础笔记 -------------面向对象上(三大特性)

面向对象三个特性:继承(Inheritence)、封装(Encapsulation)、多态(Polymorphism). 1、封装(Encapsulation): 类包含了数据与方法,将数据与方法放在一个类中就构成了封装(一般来说,...

查封炉台 ⋅ 2014/04/21 ⋅ 0

Java父类强制转换子类原则

image 最近,微信群友在讨论子类父类的转换问题,其实不难,给大家用实例来说明一下就很明了了。 我们知道Java中子类转换成父类是没有任何问题的,那父类可以转换成子类吗? 来看下面这段程序...

架构之路 ⋅ 01/02 ⋅ 2

C++ — 继承和多态的基础虚函数类

虚函数类 ————————————————————————————— 上一个博客继承中我们提到虚拟继承,现在我们来探究这种的虚函数,虚函数类的成员函数前面加virtual关键字,则这 个成...

Dawn_sf ⋅ 2017/04/01 ⋅ 0

Java程序员从笨鸟到菜鸟之(三)面向对象之封装,继承,多态(下)

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 上接:Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上) 五:再谈继承 继承是一种联结类的层...

长平狐 ⋅ 2012/11/12 ⋅ 0

Java集合中的泛型与多态问题

Java集合中泛型指的是在创建集合的时候要同时指定集合中存放的对象类型,这样做主要是基于类型安全方面的考虑。 比如假设我们要创建一个用于存放字符串的ArrayList,我们通常使用如下的方式:...

一路漫漫 ⋅ 2012/05/06 ⋅ 0

泛型的内部原理:类型擦除以及类型擦除带来的问题

参考:java核心技术 一、Java泛型的实现方法:类型擦除 Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理...

小菜鸡1 ⋅ 2016/07/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IOS-UI UI初步代码布局添加事件

ISO开发界面,UI是必须学习的一部分,其实很早之前想学来了,一直没有沉下心来学习。看到IOS的代码风格和布局就别扭的不行,跟java代码和android布局比较显得不是那么方便,所以一直到现在。...

京一 ⋅ 28分钟前 ⋅ 0

浅谈OpenDaylight的二次开发

OpenDaylight作为一款开源SDN网络控制器,依托于强大的社区支持以及功能特性,成为了目前主流的SDN网络控制器开发平台。在比较稳定的OpenDaylight Helium版本中,已经为开发者提供了大量的网...

wangxuwei ⋅ 38分钟前 ⋅ 0

API 开发中可选择传递 token 接口遇到的一个坑

在做 API 开发时,不可避免会涉及到登录验证,我使用的是jwt-auth 在登录中会经常遇到一个token过期的问题,在config/jwt.php默认设置中,这个过期时间是一个小时,不过为了安全也可以设置更...

等月人 ⋅ 38分钟前 ⋅ 0

Java NIO之文件处理

程序要操作本地操作系统的一个文件,可以分为以下三个部分: 对文件位置的操作 对文件的操作 对文件内容的操作 其中,对文件内容的操作在 Java NIO之Channel 中已经有了介绍,通过FileChann...

士别三日 ⋅ 43分钟前 ⋅ 0

Maven的pom.xml配置文件详解

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.......

小海bug ⋅ 57分钟前 ⋅ 0

解决httpclient超时设置不生效的问题

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。 初始设置如下: [java] view plain copy //超时设置 RequestConfig re...

Mr_Tea伯奕 ⋅ 今天 ⋅ 0

过滤器Filter和拦截器HandlerInterceptor

过滤器 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要...

hutaishi ⋅ 今天 ⋅ 0

Redis入门详解(转)

Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis应用场景 Redis总结 Redis简介: Redi...

xiaoyaoyoufang ⋅ 今天 ⋅ 0

说说javascript中的那些专业名词

DOM(Document Object Model) 文档对象模型 BOM(Browser Object Model) 浏览器对象模型 ECMA(European Computer Manufacturer's Association) 欧洲计算机制造商协会 W3C(World Wide Web Conso......

hang1989 ⋅ 今天 ⋅ 0

Bootstrap Wizard 多步表单控件

废话 有一块需求是 有多步表单 点击下一步时触发验证一个范围内的表单,点击上一步或取消,清空表单并返回第一步,点击最后一步提交整个表单的 就找到了这个插件,本来自己写了一个原生的 fo...

无极之岚 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部