面向对象多态变量泛型框架

面向对象多态变量泛型框架

ID:43205442

大小:623.58 KB

页数:93页

时间:2019-10-02

面向对象多态变量泛型框架_第1页
面向对象多态变量泛型框架_第2页
面向对象多态变量泛型框架_第3页
面向对象多态变量泛型框架_第4页
面向对象多态变量泛型框架_第5页
资源描述:

《面向对象多态变量泛型框架》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、多态变量多态变量是指可以引用多种对象类型的变量。这种变量在程序执行过程可以包含不同类型的数值。对于动态类型语言,所有的变量都可能是多态的。对于静态类型语言,多态变量则是替换原则的具体表现。Parentvariable=newChild();9/14/20211实际用法很少使用赋值,通常是伴随着函数或方法调用,通过数值和参数之间的绑定来实现的。9/14/20212多态变量形式简单变量接收器变量反多态纯多态(多态方法)9/14/20213简单多态变量publicclassSolitaire{..staticCa

2、rdPileallPiles[];..publicvoidpaint(Graphicsg){for(inti=0;i<13;i++)allPiles[].display(g);}}9/14/20214实例布局管理器LayoutManager是一个接口标准库为这个接口提供了几种不同的实现通过调用继承自Component类的setLayoutManager方法,将参数赋值给本地多态变量9/14/20215接收器变量多态变量最常用的场合是作为一个数值,用来表示正在执行的方法内部的接收器。隐藏伪变量smalltal

3、k:self,C++,Java,C#:this9/14/20216例classThisExample{publicvoidone(intx){value=x+4;two(x+3);}privateintvalue;privatevoidtwo(inty){System.out.println(“Valueis”+(value+y));}}9/14/20217等价的明确形式classThisExample{publicvoidone(intx){this.value=x+4;this.two(x+3);}pr

4、ivateintvalue;privatevoidtwo(inty){System.out.println(“Valueis”+(this.value+y));}}9/14/20218多态变量在框架中的作用多态接收器功能的强大之处表现在消息传递与改写相结合时。这种结合是软件框架开发的关键。一般框架系统中的方法分为两大类:在父类中定义基础方法,被多个子类所继承,但不被改写;父类定义了关于多种活动的方法,但要延迟到子类才实现。9/14/20219例由于基础方法被子类所继承,因此它们可以用于各个子类实例。接收器变

5、量多态性的展现。当执行基础方法时,接收器实际上保存的是一个子类实例的数值。当执行一个改写方法时,执行的是子类的方法,而不是父类的方法。9/14/202110例classWindow{publicvoidrepaint(){…paint(graphicsContext);…}abstractpublicvoidpaint(Graphicsg);privateGraphicsgraphicsContext;}classGraphicsWindowextendsWindow{publicvoidpaint(Gra

6、phicsg){//dotheappropriatepaintingjob}}9/14/202111思考基础方法执行延迟方法的模式。该结合允许在不修改原始代码的条件下,裁剪延迟方法以适应新的形势。是解决软件复用问题的关键。9/14/202112向下造型9/14/202113向下造型是处理多态变量的过程,并且在某种意义上这个过程的取消操作就是替换。能够将其赋值给一个声明为子类的变量吗?该取消多态赋值的过程,也称为反多态。其它例9/14/202114常用的数据结构:集合、堆栈、队列、列表。容器对象。可复用的软件

7、组件。将不同的对象放入一个集合,取出时,如何知道对象的类型呢?实现机制9/14/202115ChildaChildIf(aVariableinstanceofChild)aChild=(Child)aVariable纯多态9/14/202116多态方法支持可变参数的函数。支持代码只编写一次、高级别的抽象以及针对各种情况所需的代码裁剪。通常是通过给方法的接收器发送延迟消息来实现这种代码裁剪的。纯多态例9/14/202117关于纯多态的一个简单实例就是用JAVA语言编写的StringBuffer类中的appen

8、d方法。这个方法的参数声明为Object类型,因此可以表示任何对象类型。ClassStringbuffer{Stringappend(Objectvalue){returnappend(value,toString();}…}方法toString被延迟实现。纯多态例9/14/202118方法toString在子类中得以重定义。toString方法的各种不同版本产生不同的结果。所以append方法也类似产生了各种不

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。