在Java中,多态的实现使得我们可以不去关心具体由谁去做,做什么的问题,只需要将任务分配下去而不去关注内部细节,多态是由方法重写和方法重载,并通过父类装载子类的方式来实现的。
多态在程序中是指同一引用(父类)在不同的条件下指向不同的实例(子类对象)所表现出的不同的状态。
下面我们先来介绍一下方法重写,方法重载以及父类装载子类。
1. 方法重写
(1). 方法重写是指子类中定义了与父类中某方法名,返回值以及参数类型,参数个数完全相同的一个方法,只是与父类中方法的实现体不同,我们把这样的情况叫做子类重写了父类的某方法
(2). 方法重写的注释是@override
(3). 当我们用父类对象去装载一个子类对象时,用父类对象调用该重写方法时,虽然我们可见的是调用父类的该方法,但实际上,运行的时子类中已重写父类方法的该方法,从而实现不同的表现状态
(4). 在某些时候,当返回值不同,但只要拥有继承关系,也就是说如果是协变类型,那么也可认为是方法重写
2. 方法重载
(1). 方法重载一般是指在同一类中有函数名相同,但函数参数类型不同或是函数参数个数不同的两个或两个以上的方法
(2). 有时,方法重载也会出现在父类和子类中,但由于子类继承了父类,所以当然拥有父类中所有的方法和属性,所以归根结底,还是相当于在子类中重载方法
3. 父类装载子类
父类装载子类是说利用父类对象接收子类对象,从而达到在封装内部细节的原则上来调用运行子类方法,表面上使用父类对象来调用方法,但实际上是运行相应子类相应的不同实现体的方法,来达到不同的状态。