通过学习设计模式对面向对象编程有了更深层次的了解。在《大话设计模式》一书中的第一个设计模式里(简单工厂模式)体会到了自己学习面向对象编程时的历程。
首先要保证代码无错,我想这是大部分初学者的心愿。其次就是代码规范,这一点是很重要的,程序不仅仅是写给自己看的,更需要让别人能看懂。别人能看懂还不行,毕竟编程是已经成本很高的事,要想获得收益,首先想到的就是要降低成本。那么,降低哪些成本呢?当然这就要涉及到程序的维护、扩展和复用,这样才能有效降低成本。而面向对象的编程方法也就应运而生了。众所周知,面向对象有三个特性:封装、继承和多态。
封装
是对象和类概念的主要特征。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏,可以隐藏实现细节,使得代码模块化。
继承
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”。被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。继承可以扩展已存在的代码模块(类);它和封装的目的都是为了——代码重用。
多态
多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态与封装和继承有所不同,它是为了实现接口重用。
实现多态,有两种方式:覆盖、重载。
覆盖:是指子类重新定义父类的虚函数的做法。
重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
但是,重载并不是严格意义上的多态,只不过它可以实现多态的特性而已。
多态必须具备三大特征:子类继承父类,子类覆盖父类,父类指向子类。如果是这样的话,就说明只有继承关系才是多态的先决条件。
多态是基于对抽象方法的覆盖来实现的,用统一的对外接口来完成不同的功能。重载也是用统一的对外接口来完成不同的功能。那么两者有什么区别呢?
重载,是指允许存在多个同名方法,而这些方法的参数不同。重载的实现是:编译器根据方法不同的参数表,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。它们的调用地址在编译期就绑定了。
多态:是指子类重新定义父类的虚方法(virtual,abstract)。当子类重新定义了父类的虚方法后,父类根据赋给它的不同的子类,动态调用属于子类的该方法,这样的方法调用在编译期间是无法确定的。
不难看出,两者的区别在于编译器何时去寻找所要调用的具体方法,对于重载而言,在方法调用之前,编译器就已经确定了所要调用的方法,这称为“早绑定”或“静态绑定”;而对于多态,只有等到方法调用的那一刻,编译器才会确定所要调用的具体方法,这称为“晚绑定”或“动态绑定”。
多态是指只有到运行时才能确定要执行的代码,即指的是后绑定。
设计模式就是面向对象编程的良好体现,在接下来的学习中,将重点总结设计模式。
分享到:
相关推荐
面向对象的三个基本特征。面向对象的三个基本特征是:封装、继承、多态
都是关于面向对象的基本概念与特征,很详细的。
java学习,对于初学者来说不错的选择,就是面向对象
基于Java与Python的面向对象编程的基本特征研究.pdf
面向对象的基本特征三:多态的理解(java) * 多态:多种形态 * * 变量的引用形式: * (1)本态引用:左边的变量与右边的对象是同一种类型 * (2)多态引用:左边的变量是父类类型,右边的对象是子类的对象 ...
秋招找工作时整理的一些文档,送给需要帮助的人,希望你们也能顺利找到工作
以面向对象程序设计方法的基本特征(抽象、封装、继承、多态)为主线,由浅入深、循序渐进地展开,系统介绍了MATLAB面向对象程序设计的思想、设计方法等
JAVA相关基础知识:面向对象的基本特征,集合类比较,简单数类型与包装类,异常捕捉,重载,重写
Java的面向对象特性PPT,对于Java的类继承,多态等特性有详细的讲解
面向对象的三个基本特征和概念.doc
面向对象方法 面向对象的基本概念与特征 面向对象分析 面向对象设计 面向对象实现 面向对象方法的内涵 软件建模概述
基于Java与Python的面向对象编程的基本特征研究
如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。 接下来我们先来简单的...
主要介绍了JavaScript面向对象三个基本特征,结合实例形式详细分析了JavaScript面向对象三个基本特征封装、继承与多态的概念、原理、用法与操作注意事项,需要的朋友可以参考下
基于传统的开发方法开发出来的软件可复用性,可维护性差的原因,而使得面向对象的方法得到了广泛的应用。要掌握面向对象的开发方法,首先我们要对面向对象的基本概念和基本特征有比较深入的理解。