多态详解

来源:互联网 发布:阿里云 驾照识别 编辑:程序博客网 时间:2024/06/07 04:14
     平常问到什么是多态,相信绝大部分人会脱口而出多态不就是方法的重载和重写。但是,多态真的就是方法的重载和重写吗?
为了回答这个问题我们先来看一下多态的定义。
     1.多态的定义
     多态性是指允许不同的子类型的对象对相同的信息作出不同的响应。
     2.多态定义的理解
     要理解这句话我们得先知道什么是不同的子类型的对象、相同的信息指的是什么和作出不同的响应又指的是什么?
     不同的子类型对象:既然有不同的子类型,那么说明多态有公共的父类型,所以,不同的子类型对象指一些子类分别继承于同
一个父类型,然后这些子类型分别创建了属于自己的对象,这些对象就是不同子类型的对象。
     相同的信息:既然子类型都继承于同一个父类型,那这些子类型都得重写父类型的方法,这些重写的方法即为相同的信息。
     作出不同的响应:不同的响应指的就是各个子类型对重载的方法都有自己的实现方式。
     3.多态的实现
     由上面的分析可以知道实现多态需要做两件事:
          <1>方法的重写,即子类继承父类并重写父类中已有的或抽象的方法。
          <2>用父类型的引用引用子类型对象(Father f = new sun();),这样同样的引用调用同样的方法就会根据子类对象的不同而表现
出不同的行为。
     由上面的分析可以知道,多态的定义指的就是方法的重写。
     4.重载与多态的区别
     重载指的是具有同样的方法名,但是方法的参数类型不同,编译器在编译时通过方法的参数列表来判断调用的是哪一个方法。由此可以看出,多态指的是运行期的方法重写而不是编译期的方法重载。但是,在《Java编程思想里面》也把重载当做多态的一种实现方式,称重载为编译期的多态性,而方法的重写为运行期的多态性。所以,通常我们会把多态性分为方法的重载和重写。但是,实际上多态指的是方法的重写。
     
原创粉丝点击