我们都知道面向对象中有三大特性:封装、继承、多态。相对于封装和继承,多态要相对复杂一些。
多态:相同的操作或函数、过程可以作用于多种类型的对象,并获取不同的结果。也就是说不同的对象,收到相同的消息后能产生不同的结果。
亦可以理解为:多种现状(状态),即一个对外的接口,有多个内部实现的方法,从而得到不同的结果。
比如电商网站中的推荐,男性、女性用户进入首页后,会有不同的商品展示出来,这也是一种多态的表现。
实例
最近一个项目中(优喔app,现在可能已经挂掉了),女主播打开世界动态,顶部消息栏有个推送:app监听socket的msgShow方法,将会获取不同的消息推送(男用户登录,用户充值,用户打赏礼物等),内部实现包括socket、http等请求调用相同的接口,方法。
我们再举一个简单的例子
场景描述:定义员工的工作状
子类继承父类
分析:在上述程序中,首先定义一个员工基类,并定义一个员工工作状态的方法。然后定义将继承自员工基类的三个员工类:油漆工类、打字员类和经理类。然后定义显示员工工作状态的方法。并在该方法中创建一个“是否”关系,用于判断是否为合法的员工。其结果如下所示。
油漆工正在刷漆!
打字员正在打字!
经理正在开会!
从上例可发现,无论增加多少个员工类,只需要实现自员工父类继承的该员工类和方法。而无须修改显示员工工作状态的方法printworking()
领取专属 10元无门槛券
私享最新 技术干货