java语言中方法的多态

简介: java语言中方法的多态

前言

       自然界中,生物是多种形态的,繁殖这一行为也是多样的,细菌是裂殖,禽类是卵生,哺乳动物是胎生......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中方法的多态思想,本文仅简单介绍了多态的使用,更加巧妙的运用,还需要我们在编写项目中实际操作。文章中提到,创建父类对象,通过子类实例化,不理解的话,下一篇文章将会解释。

相关文章
|
2月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
256 18
|
2月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
114 4
|
2月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
215 4
|
3月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
154 11
|
2月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
315 5
|
3月前
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。
|
3月前
|
存储 Java Apache
Java语言操作INI配置文件策略
以上步骤展示了基本策略,在实际项目中可能需要根据具体需求进行调整优化。例如,在多线程环境中操作同一份配置时需要考虑线程安全问题;大型项目可能还需考虑性能问题等等。
188 15
|
4月前
|
算法 Java
Java语言实现链表反转的方法
这种反转方法不需要使用额外的存储空间,因此空间复杂度为,它只需要遍历一次链表,所以时间复杂度为,其中为链表的长度。这使得这种反转链表的方法既高效又实用。
426 0
|
存储 Java 编译器
Java语言------图书馆管理系统(入门简略版)
Java语言------图书馆管理系统(入门简略版)
267 0
Java语言------图书馆管理系统(入门简略版)
|
小程序 安全 前端开发
【Java编程进阶】Java语言基础入门篇
整个Java全栈编程知识体系十分庞大,包括JavaSE知识,Web前端,Web后端,数据库相关的知识等,初学者应该系统踏实的学习,一步一个脚印。Java语言是一种完全面向对象的跨平台语言。有很多突出的优点,例如简单易学,面向对象,分布式,安全可靠,解释型语言,跨平台运行,可移植高性能多线程,可实现网络编程等。
378 0
【Java编程进阶】Java语言基础入门篇