java炒冷饭系列01 方法的重载

来源:互联网 发布:韶关市网络问政平台 编辑:程序博客网 时间:2024/06/03 02:37

前言

java中的方法,即函数(文中我们统称为“方法”),是一个固定的程序段,或称其为一个子程序,它在可以实现固定运算功能。而且,同时还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值传入子程序,供计算机处理;所谓的出口,就是指函数的返回值,在程序段执行之后,由此返回值将值传回给调用它的程序。

通常地,一个类可以有多个重载方法,可根据不同的需求来设计类中不同的重载方法。其中,参数个数,类型,甚至不同类型参数的顺序等的不同均为对同一个方法的不同重载。比如,如下图,我们经常见到的String类就是一个及其典型的例子。
这里写图片描述

方法和步骤

首先

首先,我们先写一个完整的例子。这是一个最原始的方法。以后各个步骤我们陆续进行学习,逐层深入地重载这个方法

public class TestClass {    public static void main(String[] args) {        new TempClass().method();    }}class TempClass{    public void method(){        System.out.println("this is the original method.");    }}

访问修饰符是否影响重载

开始呢,我们讨论一下访问修饰符对今天讨论内容是否有影响,答案是,访问权限修饰符对方法的重载不影响。也即,它们不是构成不同方法的必要条件。通俗点讲,方法的不同和访问修饰符是否一致没有任何关系。如下图,如果访问修饰符不致,而参数相同(或者都没有参数)的话,java默认其都为同一种方法,因此编译无法通过,报错。
这里写图片描述

方法返回值是否影响重载

排队了访问修饰符之后,接下来我们讨论一下返回值的不同是否可以是重载的另一种方式,此处,我们就简单地举三个例子,即,返回值为空,返回值为int型和返回值为Object型的三个方法,最后证明,返回值也不是构成重载方法的必要条件,如图:
这里写图片描述

方法参数是否影响重载

这里写图片描述

我们说的不同的参数,并不是对参数的命名的不同,而是指参数类型的不同,我们写出来让事实证明一下。如下图,参数类型相同,都为整数类型,但是形参的命令不同,编译无法通过
这里写图片描述

还有呢,因为参数个数不同而造成的重载。我们可以再写个例子,无参方法,一个int参数, 两个int参数。
这里写图片描述

到了此时,我们到了重点环节。请问,还有没有其他类型的不同的重载呢?有的!想象一下,参数类型相同,个数相同,有什么办法使之变得不一样吗?对的!你猜对了!是顺序不同!顺序不同的情况下,也就实现了重载了。
这里写图片描述

我的误区

这里写图片描述
原以为如上图的方法重载形式是会报错的,但是经过实验后发现,这样的重载形式是正确的。
那么当调用new TempClass().method("str", "str")会调用哪个方法方法呢?答案是是确切的那个,也就是method(String a, String b)。那么如果是new TempClass().method("str", new Object())答案是method(Object a, String object)

总结

方法重载关心的只有参数

参数类型不同,参数数量不同,相同参数类型相同参数数量但顺序不同,都可以实现对相同方法名的重载

最后,相信滴水石穿,一点点积累,坚持下去。

参考文献

java怎样实现重载一个方法:http://jingyan.baidu.com/article/22fe7ced0c597b3002617f04.html

原创粉丝点击