• JAVA-初步认识-第四章-重载


    一. 函数重载

    重复载入。

    我目前粗浅地理解就是,类中出现了相同名字的函数,虽然它们本质不一样,但是从名字看,我们就认为它们是在栈里面被加载了。

    截图中,就是函数重载概念能够成立的前提条件。

    下面我们举例来说明一下:

    上面的例子,编译和运行都没有问题,设计上有点问题。定义函数的目的是为了封装功能,为了复用,函数名通常体现其功能,增强阅读性。这里有add1,add2,add3,弄不清楚它们之间有什么区别。随之而来的操作就是将函数名进行改变,如下:

    但是函数名是按功能而定的,如果函数是加法运算,那么就叫add,所以三个函数都叫add,这就带来一个问题,如果调用add方法的时候,调用的是哪一个?同一个名字的函数出现了三次。仔细地观察三个函数,如果在主函数中输入add(3, 4),那么虚拟机会自动判断,调入的是add(int a, int b)。不同的输入,调用的是不用的函数,由于名字一样,就好像是重复载入(前提必须是一个类中)。同一个函数被重复载入了多次。实际上函数名后面的参数列表对同名函数进行了区分。

    下面有一个错误,调用的不确定性。形参一样,无法知道调用哪个,程序会直接报错。

    这里还有一个错误,如果两个函数,返回值类型,函数名,和形参完全相同也会出错。看下面的截图,意味着执行语句不一样。

    这里出现不确定性的原因在于,形参一样,函数名一样,如果函数返回值类型不一样或者返回值类型一样,执行语句不同,都会导致不确定性。因为重载函数的区别是由形参,函数名决定,如果两个方法这两个东西是一样的,那么在调用时,虚拟机就无法确定了。

  • 相关阅读:
    【leetcode】1415. The k-th Lexicographical String of All Happy Strings of Length n
    【leetcode】1413. Minimum Value to Get Positive Step by Step Sum
    【leetcode】1410. HTML Entity Parser
    【leetcode】1409. Queries on a Permutation With Key
    1, 2, and 4 symbols per clock中数据排列
    RGB转换成YCbCr
    RAW转换成RGB
    ROM的一种写法
    IP之ALTIOBUF仿真
    IP之ALTDDIO_in仿真
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7595365.html
Copyright © 2020-2023  润新知