标签:
多态和抽象是从继承引出来的两个重要的概念,多态允许对象以多种形式存在,而抽象则允许创建抽象类。
多态是指一个对象有多种形式的能力。一个类的子类可以定义它们唯一的行为,同时共享父类的某些相同特征。动态多态指在运行中系统才能动态确定方法所指的对象。
多态的技术基础:
向上转型技术:一个父类的引用变量可以指向不同的子类对象,或者说一个子对象可以被当做一个父类类型;
instanceof关键字:用于判断运行时对象的真正类型;
动态绑定技术:运行时根据父类引用变量所指对象的实际类型执行相应的子类方法,从而实现多态性。
向上转型:从低精度数据类型向高精度数据类型转换时实行自动转换;向下转型:从高精度数据类型向低精度数据类型转换时,需要使用强制类型转换符。子类向父类向上转型是自动转换,父类向子类必须使用强制类型转换才能实现向下转型;转换之前先用if判断,关键字instanceof判断前对象是否是后对象的实例。ClassCastException类型转换异常。
一个方法的调用与该方法所在的类关联起来,称为绑定。
静态绑定(前期绑定):在程序执行前方法已经被绑定,此时由编译器或其他连接程序实现。针对java简单的可以理解为程序编译期的绑定,java中的方法只有final、static、private和构造器是前期绑定。
动态绑定(后期绑定):在运行时根据具体对象的类型进行绑定。java中所有的普通方法,都采用动态绑定技术。
多态的主要应用:
多态参数:就是当方法的某个形式参数是一个引用的时候,与该引用兼容的任何对象都可以传递给方法,从而允许方法接受不同数据类型的形式参数。异构集合:多态最常见的应用是创建一个不是同一类型,但是有共同父类的数据集合。不同对象的集合称为异构集合。
抽象:关键字abstract,在编写类时,通常会在类中定义一些方法,用来描述该类所具有的行为。在类的方法体中,我们编写代码实现该类所要执行的行为。修饰类:抽象类不能被实例化,需要继承(没有业务意义)。修饰方法:这个方法没有主体(主体没有实际意义)。抽象方法必须在抽象类中,抽象方法在子类中必须得到实现,除非子类也是抽象类。从设计角度看,将一个抽象方法放在父类中,可以强制任何子类实现一个特别的行为。
标签:
原文地址:http://www.cnblogs.com/fping/p/4458299.html