前言
自然界中,生物是多种形态的,繁殖这一行为也是多样的,细菌是裂殖,禽类是卵生,哺乳动物是胎生......java语言中的一个创建的方法,看成这个例子中的"繁殖",那么想要在不同类中(不同生物身上)实现对应的怎么"繁殖",这就要用到"多态"
一、多态是什么?
多态,将同一个方法,通过多个子类继承父类,子类覆写父类方法,在同包的类上,父类对象子类实例化,实现同一个代表某种行为的方法,产生不同的具体效果
二、使用步骤
1.实操展示
情景:养殖场中养着鸡、鸭、鹅三种禽类,养殖场中配备了传感器,每产出一个蛋,后台都会记录出产了什么蛋
思考:鸡、鸭、鹅三种动物都进行着同一种行为,产蛋,只是产的蛋具体为鸡、鸭、鹅的蛋,利用“多态”的思维即可
第一步 创建父类 Animal类,创建 produce 方法
package package3; public class Animal { void produce(){ } }
第二步 创建子类 Chicken类,Goose类,Duck类,覆写 produce 方法 改为相应的内容
(1)Chicken类
package package3; public class Chicken extends Animal{ void produce() { System.out.println("获得一枚鸡蛋"); } }
(2)Goose类
package package3; public class Goose extends Animal{ void produce(){ System.out.println("获得一枚鹅蛋"); } }
(3)Duck类
package package3; public class Duck extends Animal{ void produce() { System.out.println("获得一枚鸭蛋"); } }
第三步 创建Demo类
1.通过随机数,生成0,1,2,模拟鸡鸭鹅的随机产卵,0 为鸡蛋,1为鹅蛋,2为鸭蛋
2.创建 父类对象 通过子类 实例化,调用对应子类的produce()方法
package package3; import java.util.Random; public class Demo { public static void main(String[] args) { Random num = new Random(); int num0 = 0 , num1 = 0 , num2 = 0; for(int i=0;i<5;i++) { int j = num.nextInt(3); //模拟鸡鸭鹅的随机产卵,0 为鸡蛋,1为鹅蛋,2为鸭蛋 if(j==0) { Animal chicken = new Chicken(); // Animal 对象 Chicken类实例化 chicken.produce(); //调用Chicken类中的 produce方法 num0++; }if(j==1) { Animal goose = new Goose(); // Animal 对象 Goose类实例化 goose.produce(); //调用Goose类中的 produce方法 num1++; }if(j==2) { Animal duck = new Duck(); // Animal 对象 Duck类实例化 duck.produce(); //调用Duck类中的 produce方法 num2++; } } System.out.println("------------------------"); System.out.println(" 养殖场库存 "); System.out.println("鸡蛋个数:"+num0); System.out.println("鹅蛋个数:"+num1); System.out.println("鸭蛋个数:"+num2); System.out.println("------------------------"); } }
结果展示:
如Demo类中的代码所示,分别调用了三个 produce()方法,而三个方法,名称相同,输出结果却分别是 鸡蛋,鹅蛋,鸭蛋。这便是多态的思维。
2.注意事项
在某些情况下,需要用到多态的思维时,我们会发现,不用多态的思维,也可以解决,而这常常在代码框架上留下了逻辑漏洞。
出现BUG时,我们编写的程序,没有明确的逻辑和框架,Debug的时间将大大增长,哪出错了?为什么出错了?改错后会不会对其他的功能产生影响?于是一支烟,发呆一整天。
多态是java面向对象编程的一个重要概念,让我们的代码模块化,在做大项目时,模块化决定着这个项目的维护成本。打个比方,一辆车,前保险盖冒烟了,我们立马知道是车的引擎出了问题,修引擎即可,不用把汽车全部拆开,也不用担心引擎没修好,会影响车的轮胎。
因此,多态在做大项目中,必不可缺。
总结
以上就是java中方法的多态思想,本文仅简单介绍了多态的使用,更加巧妙的运用,还需要我们在编写项目中实际操作。文章中提到,创建父类对象,通过子类实例化,不理解的话,下一篇文章将会解释。