重载和重写有什么区别?

重载(Overload)

在一个类中,具有相同的方法名,但是方法参数不同,返回值类型可以相同也可以不同。

  • 被重载的方法必须改变参数列表(参数个数或者类型不一样)
  • 被重载的方法可以改变返回类型
  • 被重载的方法可以改变访问修饰符
  • 被重载的方法可以声明新的或更广的检查异常
  • 方法能够在同一个类中或者在一个子类中被重载
  • 无法以返回值类型作为重载函数的区分标准

重写(override)

一般都是表示子类和父类之间的关系,其主要的特征是:方法名相同,参数相同,但是具体的实现不同。

  • 参数列表与被重写方法的参数列表必须完全相同
  • 返回类型与被重写方法的返回类型可以不同,但是必须是父类的返回值的派生类
  • 访问权限不能比父类中被重写的方法的访问权限低。
  • 父类的成员变量只能被它的子类重写。
  • 声明为final的方法不能被重写。
  • 声明为static的方法不能被重写,但是能被再次声明
  • 子类和父类在同包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
  • 构造方法不能被重写
  • 如果不能继承一个类,则不能重写该类的方法
  • 重写的方法能抛出任何非强制异常,无论被重写的方法是否抛出异常.但是,重写的方法不能抛出新的强制性的异常,或者比被重写方法声明的更广泛的强制性异常,反之可以。

构造器可以被重写和重载吗?

一个类的构造器不能被继承,所以它不能被重写。
一个类里面有多个构造器,所以它能被重载。

main方法可以被重写和重载么?

可以重载,但是JVM将始终调用原始的main方法,而永远不会调用重载的main方法。
不能重写,因为main方法是静态的,而static方法在java中不能被覆盖。

私有方法能被重载或者重写吗?

可以重载,不能重写。

静态方法能被重载或者重写么?

静态方法可以被重载:一个类可以存在多个同名但不同参数的static方法
静态方法不可以被重写:如果子类也定义了同样的,会被子类同名的静态变量,静态方法所隐藏。

【重载和重写的区别】相关推荐

  1. C++中重载与重写函数区别及虚函数(转载)

    C++中重载与重写函数区别及虚函数 C++中的虚函数(virtual function) 1.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的 ...

  2. java 可以重载等于号码_Java面试之Java基础4——重载与重写的区别

    目录 重载与重写的概念 重载与重写的区别 重载与重写的总结 构造器是否能被重写override 为什么函数不能根据返回类型来区分重载 重载与重写的概念 重载:同样一个方法可以根据输入参数列表的不同,做 ...

  3. 开课吧-Java常见面试题:重载和重写的区别?

    重载和重写的区别? 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性. 重载发生在一个类中,同名的方法如果有不同的参数列表(类型不同.个数不同.顺序 ...

  4. C#重载和重写的区别

    C#重载和重写的区别  重载就是在同一个类中,方法名相同,参数列表不同.参数列表不同包括:参数的个数不同,参数类型不同等. 重载特征: I.方法名必须相同 II.参数列表必须不相同,与参数列表的顺序无 ...

  5. 继承、多态,重载、重写的区别与总结

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...

  6. JAVA中重写和实现的区别_Java中重载和重写的区别

    Java中重载和重写的区别 1.1重载是什么 Overloading   方法重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数同时存在,具有不同的参数个数/类型 1.2为什么用重载 重载 ...

  7. 重载和重写的区别有哪些?

    重载和重写的区别有以下几点: 一.定义上的区别: 1.重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同.调用的时候根据函数的参数来区别不同的函数. 2.覆盖(也叫重写)是指在派生类中重 ...

  8. C#重载与重写的区别

    前言:在之前的博文中,我总结过重载与重写的区别与用法,本博文算是一个系统的概述与总结. 文章目录 一.重载与重写的区别 二.重载与重写的特征 三.重载与重写的对比 一.重载与重写的区别 重载必须在同一 ...

  9. java中重载与重写的区别

    最近了解一下重载和重写  一.重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading ...

  10. 二十三、Java类中重载和重写的区别

    @Author:Runsen @Date:2020/5/31 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...

最新文章

  1. 计算机显卡敀主要性能参数,显卡性能看什么参数(新手必备的显卡性能知识全解)...
  2. jvisualvm.exe使用时涉及的配置、使用方式
  3. 考研失败了,该何去何从?
  4. 阿里巴巴右侧6滑块VS雅虎右侧6滑块VS自定义6滑块
  5. 编程实现 有符号乘法溢出判断
  6. 驱动依赖_自噬依赖的分泌因子的产生促进致癌RAS驱动的侵袭
  7. 俄罗斯方块的那些事:1.概要
  8. Advanced Graphics and Animations for iOS Apps
  9. The Semantics of Constructors(拷贝构造函数之编译背后的行为)
  10. 批量下载CSS中的图片
  11. unix下c语言recv函数,Linux send与recv函数详解
  12. Java文件操作——简单文件搜索
  13. Python版剑指Offer题解
  14. 发展战略-以技术为导向还是以产品为导向的方向选择?
  15. 热敏电阻PTC和NTC的区别
  16. 打印101~150之间的质数
  17. Endnote X9.1 参考文献悬挂缩进
  18. python中的连乘_python连乘
  19. 3GPP TS 23501-g51 中英文对照 | 4.2.10 Architecture Reference Model for ATSSS Support
  20. 别闹,你真的会发邮件吗?

热门文章

  1. 条件概率的本质是样本空间的缩减
  2. Markdown 更改字体颜色
  3. 学习python的编程语言
  4. 史上最全体检表、检验报告解析
  5. 从宗教信仰看东西方文化对人的影响
  6. Linux下使用wget安装JDK
  7. 新年开工第一篇文章——推荐几个值得中小企业使用的ARM9/ARM11/Cortex A8处理器
  8. arm 2022.10.24
  9. C# -> (Cshape)笔记
  10. SCons教程 (2) SConstruct 文件介绍