zoukankan      html  css  js  c++  java
  • JAVA-初步认识-第四章-重载

    一. 函数重载

    重复载入。

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

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

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

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

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

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

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

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

  • 相关阅读:
    Leetcode 349. Intersection of Two Arrays
    hdu 1016 Prime Ring Problem
    map 树木品种
    油田合并
    函数学习
    Leetcode 103. Binary Tree Zigzag Level Order Traversal
    Leetcode 102. Binary Tree Level Order Traversal
    Leetcode 101. Symmetric Tree
    poj 2524 Ubiquitous Religions(宗教信仰)
    pat 1009. 说反话 (20)
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7595365.html
Copyright © 2011-2022 走看看