一、概述

就Java而言,当有人问:

什么是多态?

将重载或重写的区别解释为一个可以接受的答案?

如果您有一个抽象基类,它定义了一个没有实现的方法,并且您在子类中定义了该方法,那该方法是否仍然覆盖?

我认为重载不是正确答案。

二、详解

表达多态性的最清晰方法是通过抽象基类(或接口)

public abstract class Human{

...

public abstract void goPee();

}

此类是抽象的,因为该goPee()方法无法为人类定义。只有男性和女性子类别才可以定义。同样,人类是一个抽象的概念—您不能创造既不是男性也不是女性的人类。它必须是另一个。

因此,我们通过使用抽象类推迟实现。

public class Male extends Human{

...

@Override

public void goPee(){

System.out.println("Stand Up");

}

}

public class Female extends Human{

...

@Override

public void goPee(){

System.out.println("Sit Down");

}

}

现在我们可以告诉所有“人”执行gopee方法。

public static void main(String[] args){

ArrayList group = new ArrayList();

group.add(new Male());

group.add(new Female());

// ... add more...

// tell the class to take a pee break

for (Human person : group) person.goPee();

}

运行此将产生:

Stand Up

Sit Down

...

多态性是指不止一种形式,同一对象根据需要执行不同的操作。

多态可以通过两种方式实现,即

方法覆盖

方法重载

方法重载是指使用相同的方法名称在同一类中编写两个或多个方法,但是传递的参数不同。

方法覆盖意味着我们在不同的类中使用方法名称,这意味着在子类中使用父类方法。

在Java中,为了实现多态性,超类引用变量可以保存子类对象。

为了实现多态,每个开发人员必须在项目中使用相同的方法名称。

Java 重写 多态性_java多态性重写overriding和重载overloading的区别相关推荐

  1. Java中方法的重写(overriding)和重载(overloading)的区别

    Java中方法的重写(overriding)和重载(overloading) 重写 在子类中可以根据需要对从父类中继承来的方法进行改造,也称为重置.覆盖. 在子类中创建一个和父类中的一个相同名字.相同 ...

  2. java 什么是多态性_Java多态性理解

    什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一 ...

  3. java隐藏类_java Class类中隐藏和覆盖的区别

    覆盖 子类扩展父类获得父类当中的方法和成员变量,可是父类中的某些方法,不适合子类本身,所以则需要重写,子类 定义父类方法的过程就是方法的覆盖,字段不能被覆盖,只能被隐藏 用static描述的属性和方法 ...

  4. java 软引用_Java中弱引用和软引用的区别以及虚引用和强引用介绍

    知道弱引用和软引用的概念与如何使用它们是两码事,引用类在垃圾回收工作的过程中有重要作用.我们都知道垃圾回收器会回收符合回收条件的对象的内存,但并不是所有的程序员都知道回收条件取决于指向该对象的引用类型 ...

  5. java listfiles 使用_Java中list()和listFiles()方法之间的区别

    java.io包的名为File的类表示系统中的文件或目录(路径名).为了获得目录中所有现有文件的列表,此类提供了list()和ListFiles()方法. 它们之间的主要区别是该列表()方法返回一个字 ...

  6. java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法

    展开全部 JAVA中string.replace()和string.replaceAll()的区别及用法乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),32 ...

  7. java 枚举迭代_Java中的枚举和迭代器之间的区别

    java 枚举迭代 Java中的枚举与迭代器 (Enumeration vs Iterator in Java) Here, we will see how Enumeration differs f ...

  8. web开发为什么用java的多_java与php做web开发 最大的区别在那 为什么好多用java的...

    PHP做的Web应用性能就比Java差吗? 就拿查询MySQL获取结果集并在页面上显示数据为例来分析. HTTP请求由C级别的程序比如Apache/Nginx处理(Java的HTTP服务用的是Java ...

  9. java 枚举常量_java中的枚举类和常量类区别在哪儿?

    假如有一笔业务需要审核,审核状态分:未审核,审核中,审核通过,审核不通过.我们在程序里是否可以直接这么写: if(state==1){//1代表未操作 //操作 }else{ //...... } 将 ...

最新文章

  1. MFC中小笔记(三)
  2. 一场开发与视觉的对话引发的思考
  3. flash 游戏 ui 制作方案
  4. 6 MM配置-企业结构-分配-给公司代码分配采购组织
  5. python requests text content_对python requests的content和text方法的区别详解
  6. 第二章 部署war包到tomcat
  7. 【易实战】Spring Cloud Greenwich版本发布
  8. bam文件flag的含义
  9. 自己制作一个计时器、倒计时器
  10. ubuntu系统20.04 无线网卡QCA6174 wifi不存在或找不到解决方法 红米笔记本
  11. 【智能制造】歌尔股份打造面向可重构和微服务的可穿戴产品智慧工厂
  12. 既要面子,也要里子,车企成不了自动驾驶的“独行侠”
  13. 基金定投--1.基金的基础知识
  14. 一次性禁止禁止Flash Helper service(即ff新推荐)即flash弹出来的广告
  15. 【杂篇 · 技巧】Typora 快捷键整理
  16. Element表格出现闪动问题
  17. php layui弹出修改功能,非常好用的弹出层 layer,常用功能demo,快速上手!
  18. HTTPDNS基礎知識
  19. 一个小白轻松月入上万块的线上冷门项目
  20. 爬虫练习--爬取股票数据

热门文章

  1. [转].NET 开源项目 Anet 介绍
  2. Android数据手册:Android颜色码制表
  3. 最新Modis影像数据下载完整流程---以MOD13Q1 NDVI数据下载为例(2020年12月2日更新)
  4. 【重磅】ArcGIS 10.8手把手经典图文安装教程(附安装包全套装下载,亲测可用)
  5. 【空间数据库技术】ArcSDE 10.1安装配置与企业级地理空间数据库的建立及连接
  6. 地图投影系列介绍(三)----地图投影
  7. Android之简单背景颜色渐变实现
  8. 浙大计算机系可以转专业吗,求教。。浙大转专业容易吗
  9. 10个遥远但近在人间的天堂!
  10. 听说你趁我不在家,欺负我老婆?