java基础篇----多态的使用
我们都知道面向对象的三大特征:封装,继承,多态.封装就是,给属性提供公开的get,set方法,把具有相同功能的重复的代码抽取出来,形成一个方法;继承使用extends关键字,子类可以继承父类拥有的方法,属性(前提是方法和属性不是private类型),以及父类的构造方法;什么是多态?就是在子类继承父类的基础上,子类重写父类的方法,父类作为方法的参数,以及返回值类型.
举个例子:一个主人喂养他的多个宠物,用多态的思想优化代码
下面有一个宠物类,使用封装的思维,给每个属性提供公开的set(),get()方法.

再有一个猫类,猫继承宠物,可以调用宠物类中公开的属性和方法.
重点:重写了Pet类中的eat()方法

还有一个狗类,也是继承了宠物类,以及重写了父类的eat()方法

有个主人类,里面有喂狗,喂猫的两个方法.

这时候就有一个问题,如果还有其他的宠物,就得每次来主人类这里添加这重复的几行代码.这种代码就有几个缺点:1.是代码重复;2.可扩展性低,每添加一个宠物,就得回这个类修改代码;3.是违背了开发的开闭原则.
下面修改代码,使用多态的思维,有两种方式.1.把父类作为参数 2.把父类当做返回值类型
编写feed()方法,把父类当做参数,来调用eat()方法.

最终测试一下,调用主人类中的feed()方法,需要喂养什么,就把哪个对象传进去.

今后再添加宠物,需要做的只有两步,1)编写相关的类继承宠物类Pet;2)在测试类给属性赋值,传对象.
总结:我们编写程序,不单单是要把功能实现出来,在未来的工作中,团队合作不可或缺,负责的位置不一样,也不可能增加一个类,就叫工友添加一个喂养功能进去........二是提供后续的扩展性,不需要去修改之前的代码,在那些代码的基础上添加新的代码来实现功能.

浙公网安备 33010602011771号