多形性学习总结

多形性”意味着“不同的形式”。在面向对象的程序设计中,我们有相同的外观(基础类的通用接口)以及使用那个外观的不同形式:动态绑定或组织的、不同版本的方法。

通过这一章的学习,大家已知道假如不利用数据抽象以及继承技术,就不可能理解、甚至去创建多形性的一个例子。多形性是一种不可独立应用的特性(就象一个switch语句),只可与其他元素协同使用。我们应将其作为类总体关系的一部分来看待。人们经常混淆Java其他的、非面向对象的特性,比如方法过载等,这些特性有时也具有面向对象的某些特征。但不要被愚弄:如果以后没有绑定,就不成其为多形性。

为使用多形性乃至面向对象的技术,特别是在自己的程序中,必须将自己的编程视野扩展到不仅包括单独一个类的成员和消息,也要包括类与类之间的一致性以及它们的关系。尽管这要求学习时付出更多的精力,但却是非常值得的,因为只有这样才可真正有效地加快自己的编程速度、更好地组织代码、更容易做出包容面广的程序以及更易对自己的代码进行维护与扩展。

时间: 2024-07-29 03:41:09

多形性学习总结的相关文章

php设计模式及耦合性和多形性

什么是设计模式: 设计模式就是一个教你如何利用真实可靠的设计来组织你的代码的模板. 所有的设计模式都有一些常用的特性:一个标识(a name),一个问题陈述(a problem statement)和一个解决方案(a solution). 1.一个设计模式的标识是重要的,因为它会让其他的程序员不用进行太深入的学习就能立刻理解你的代码的目的(至少通过这个标识程序员会很熟悉这个模式). 2.问题描述是用来说明这个模式的应用的领域. 3.解决方案描述了这个模型的执行.一个好的设计模式的论述应该覆盖使用

java的多形性

"对于面向对象的程序设计语言,多型性是第三种最基本的特征(前两种是数据抽象和继承." "多形性"(Polymorphism)从另一个角度将接口从具体的实施细节中分离出来,亦即实现了"是什么"与"怎样做"两个模块的分离.利用多形性的概念,代码的组织以及可读性均能获得改善.此外,还能创建"易于扩展"的程序.无论在项目的创建过程中,还是在需要加入新特性的时候,它们都可以方便地"成长". 通过合

设计范式学习总结

从表面看,由于象TrashVisitor.java这样的设计包含了比早期设计数量更多的代码,所以会留下效率不高的印象.试图用各种设计方案达到什么目的应该是我们考虑的重点.设计范式特别适合"将发生变化的东西与保持不变的东西隔离开".而"发生变化的东西"可以代表许多种变化.之所以发生变化,可能是由于程序进入一个新环境,或者由于当前环境的一些东西发生了变化(例如"用户希望在屏幕上当前显示的图示中添加一种新的几何形状").或者就象本章描述的那样,变化可能

从8个方面对移动设备阅读体验进行研究学习

一直想对移动设备阅读体验进行较为完整的研究和学习,但内容太多,涉及到非常多的传统平面设计知识,目前仅初步地完整字体部分.完整的研究框架包括: 1.界面版式设计的方法.常用的栅格分割适合移动设备多分辨率复杂内容的自动排版,内容可控制时是否可以模仿杂志的复杂不规则排版方式,以达到最佳的阅读体验. 2.移动设备上最佳的字体有什么必要的设计要素?如下图,更多的内容包括字体颜色.字间距.行间距和字体渲染等,不同的内容需要不同的字体.随着屏幕分辨率和显示精度的发展,字体也有一个进化过程. 3.屏幕亮度等参数

值得学习的19个jQuery和CSS按钮教程

jQuery是继prototype之后又一个优秀的Javascrīpt框架,使用户能更方便地处理HTML documents.events.实现动画效果,并且方便地为网站提供AJAX交互.相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排 版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象盒模型的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言. 这里就将分享国外19个值得学习的jQuery和CSS按钮教程,希望能有所帮助. Awesome CSS

[Java]基本的学习实例

好久没有更新了,偷懒,该打!1.这个是一个基本的文件操作,实现对文件读取.写入一个数字的操作的package trying;import java.io.*; /** * @author gooing */public class FileRw { private File f = new File("d:\\j2\\a.txt"); public int getNum(){ int i = -1; try{ String stri=""; BufferedRead

java web实现增删改查后,应该学习哪些高级技术?

问题描述 java web实现增删改查后,应该学习哪些高级技术? 做了个小项目,实现了curd,想继续往缓存,并发,负载高级深入,请推荐一个详细的高级技术路线?最好有书 解决方案 javaweb深入浅出,不过这个方向研究,主要还是在公司里学的会更实用些 解决方案二: 多线程,Socket,I/O JSP.EL.JSTL,AJAX JavaScript,jQuery JSON,XML EJB(可忽略) 各种框架 ......太多了 解决方案三: 多线程,Socket,I/O JSP.EL.JSTL

我的java学习经验谈2

  第二篇:编程入门上一次给大家说了环境的配置,这几天又连着上了几次课,大致都是再说一些编程入门的基础知识,把心得跟大家分享一下吧!我再声明一下,我本人的编程水平很是有限, ^_^,所以我说的力图让大家好懂,至于概念我尽量的不去说,因为我怕我说的不准,耽误了大家的学习,至于不对的地方,还请大家多多指出,省得让新人们看了概念混淆!我的文章的目的基本上是扫盲,想让更多的哥哥妹妹们早点的跨入编程的大门,省得天天让那些电脑公司的二道贩子天天一两句变量,函数什么的就给弄的晕头转向!实话实说,国内现在程序员

JetSpeed学习笔记(一)

笔记 JetSpeed学习笔记(一) fuweilin 2005-4-7 前言 参加了公司的portal的兴趣小组,今天对portal进行学习.首先上网看了看一些portal的资料,对portal.portlet.portlet container以及JSR168等概念有个基本的了解.决定进一步实战的方式感受portal,于是学习JetSpeed.     1.  JetSpeed介绍JetSpeed是Apache组织开发的一个采用Java和XML的开放源代码的企业信息门户的实现.门户可以让终端