真善美

勇于承担责任; 如果你做不到,要提前跟别人说明,不要等到事情发生后再解释。

  BlogJava :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  55 随笔 :: 0 文章 :: 29 评论 :: 0 Trackbacks

面向对象程序设计的三大原则是封装性、继承性、多态性。

这里主要说一下多态性,在说多态之前先说几个概念:
将一个方法调用同一个方法主体连接到一起就称为“绑定”(Binding)。
若在程序运行前执行绑定(由编译器和链接程序完成——如果有的话),就叫作“早期绑定”。

Java在运行时动态的调用方法,这叫后期绑定(late binding,后期绑定也叫作“动态绑定”或“运行时间绑定”)。
注:final方法不能被重载,对方法的调用可以在编译时解决,这属于早期绑定。

Java的所有方法绑定都采用“后期绑定”技术,除非一个方法已被明确声明成final。也就是说,我们通常不必关心是否会进行后期绑定——它是自动进行的。

多态性是指允许不同类的对象对同一消息作出响应。做个简单比喻:你儿子喊你,你会说:“嗨,儿子”。你父亲喊你,你会说:“嗨,爸爸。”。对同一消息(有人喊你),做出的反应不同(做出不同的反应)。

常见的两种多态方式为:① 重写 ② 重载

重写(Overriding)是父类与子类之间多态性的一种表现,如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,而父类中的定义则被“屏蔽”了。

注意:
1、 方法名称一定要一样
2、 返回值的数据类型要一样。
3、 所使用的参数要一样,包括参数个数及每个参数的数据类型也要一样。
4、 限定词的使用权限只能越开放,不能越封闭。
5、 类方法不能被重写,只有未使用static限定词的方法可以被重写。 

重载(Overloading)是一个类中多态性的一种表现。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

为什么要重载方法?
重载方法允许Java支持运行时多态性。多态性是面向对象编程的本质,原因如下:它允许通用类指定方法,这些方法对该类的所有派生类都是公用的。同时该方法允许子类定义这些方法中的某些或全部的特殊实现。重载方法是Java实现它的多态性—“一个接口,多个方法”的另一种方式。
 
构造函数可以从超类那里继承,也可以互相重载。类的若干个构造函数可以相互调用,一个构造函数调用另一构造函数时,可以使用关键字this。同时,这个调用语句应该是整个构造函数的第一个可执行语句。

参考:Thinking.in.Java简体中文第二版

posted on 2007-07-11 17:26 真善美 阅读(275) 评论(0)  编辑  收藏 所属分类: Java学习