博客
关于我
方法的重载
阅读量:596 次
发布时间:2019-03-12

本文共 1269 字,大约阅读时间需要 4 分钟。

方法的重载概念

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。简单来说,就是在同一个类中,可以有多个方法具有相同的名字,但它们的参数列表必须不同。这种特性被称为方法的重载(Method Overloading)。

"两同一不同"是理解方法重载的关键:

  • 同一个类中
  • 方法名相同
  • 参数列表不同(参数个数和类型都可以不同)

举例说明

我们来看一下方法重载的典型例子:

  • Java.util.Arrays类中的sort()方法和binarySearch()方法
  • Java.io.PrintStream类中的println()方法
  • 还有一个由四个方法构成的例子:public void getSum(int i, int j) {System.out.println("1");}public void getSum(double d1, double d2) {System.out.println("2");}public void getSum(String s, int i) {System.out.println("3");}public void getSum(int i, String s) {System.out.println("4");}

    这些方法满足重载的条件,参数列表各不相同。

    不构成重载的例子:

  • public int getSum(int i, int j) {return 0;}
  • public void getSum(int m, int n) {}
  • private void getSum(int i, int j) {}
  • 这些方法虽然名称相同,但要么返回类型不同,要么参数个数或类型不同,都符合重载的条件吗?不,实际上,这三个方法并不能构成重载,因为它们的参数列表并不完全相同。

    如何判断是否构成重载?

    严格按照重载的定义来判断:

    • 同一个类中
    • 方法名相同
    • 参数列表不同(不管是参数个数还是类型)

    方法的权限修饰符、返回值类型、参数变量名、方法体没有关系。

    如何确定类中某一个方法的调用?

    方法名 -> 参数列表

    面试题:方法的重载与重写的区别?

    方法的重载是同一个类中方法名相同但参数列表不同的情况,而方法的重写是同一个类中继承自父类的方法进行修改或完全替换。主要区别包括:

    • 调用方式:重载是通过参数列表确定方法的具体实现,而重写是通过对象引用确定。
    • 可变性:重载不会改变方法的可变性,而重写会改变。
    • 返回类型:重载的方法返回类型可以不同,而重写的方法返回类型必须与父类方法一致。

    其他关键技术点

    • throws与throw
    • String与StringBuffer与StringBuilder
    • Collection与Collections
    • final与finally与finalize
    • sleep()与wait()
    • 抽象类与接口
    • String类与StringBuilder类
    • Collection框架

    这些都是Java编程中常用的技术关键点,理解它们对于提高代码质量至关重要。

    转载地址:http://mktxz.baihongyu.com/

    你可能感兴趣的文章
    微信小程序 数据列表点击会有提示
    查看>>
    Effective Java 读书笔记
    查看>>
    JVM 学习笔记十三、垃圾回收概述
    查看>>
    Rsync + Intofy 数据实时同步方案
    查看>>
    肯德基点餐系统(课程设计)
    查看>>
    杭电oj day1按各字符的ASCII码从小到大的顺序输出这三个字符。
    查看>>
    浅析deep深度选择器
    查看>>
    No.3.1_11 JavaSE入门 P10 【常用API】数组排序和Arrays工具类、包装类、Date
    查看>>
    Shiro RememberMe 1.2.4 反序列化漏洞(Shiro-550, CVE-2016-4437)复现
    查看>>
    用汇编实现8255中断实验
    查看>>
    用汇编实现模数转换实验(ADC0809)
    查看>>
    tomcat启动时遇到Error starting child和404时
    查看>>
    使用jieba时的bug
    查看>>
    Method com/mysql/jdbc/ResultSet.isClosed()Z is abstract
    查看>>
    SpringBoot使用@Email报错误
    查看>>
    SpringBoot之国际化
    查看>>
    Maven 输入依赖名字不提示
    查看>>
    Rabbitmq的内存磁盘监控
    查看>>
    访问servlet时弹出文件下载框解决方法
    查看>>
    IDEA中同时push项目到gitee和github
    查看>>