多态的出现是基于java中的继承结构而出现的。
每一个技术的出现都是为了解决现实中的问题。
下面请设想一个场景:
你在设计一个学校官网注册登录系统,
那么,在设计注册register功能的时候,
会有不同身份的人注册,
其中有老师,学生,还有辅导员,管理员,宿管......
显然,你会用一个继承结构去书写这个构架,去描述他们之间的关系:
为简单起见,我们描述3个对象:
显然,老师Teacher、学生Student、管理员Administrator三者都有一个共同的功能——注册
我们就可以将这个register()方法从三个子类中抽取到父类当中,这就是继承
我们已经完成了一个基本的继承构架
但是现在问题来了:
当我们在父类书写register()方法时,参数我们应该写什么?
写(teacher t )?
那sudent和Administrator 怎么办?
同理,写哪一个都不合适。
所以,java在设计的时候就使用了多态这样的设计,去解决这样的问题。
那么到底参数是什么比较合适呢?
Person p !
为什么?
而且,我们在后面多加一个角色继承父类时,都能直接使用到其中的register()
并且会根据相应的角色调用自己的信息
如此,极大的增加了可拓展性以及便利性!
下面做一个总结:
什么叫做多态?
顾名思义,就是一个对对象拥有不同的形态
多态的前提?
有继承/实现关系
有父类引用指向子类对象
有方法的重写
多态的好处:
使用父类作为参数,可以接收所有子类对象