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
- java炒冷饭系列01 方法的重载
- java炒冷饭系列02 方法的重写
- java炒冷饭系列11 方法和作用域内的内部类 与 匿名内部类
- 炒冷饭系列--iOS crash 崩溃问题的追踪方法
- java炒冷饭系列04 初始化及类的加载
- java炒冷饭系列13 内部类的继承
- 炒冷饭系列:设计模式 工厂方法模式
- java炒冷饭系列07 java标准异常
- java炒冷饭系列03 接口修饰符
- java炒冷饭系列06 异常匹配
- java炒冷饭系列06 异常说明(throws)
- java炒冷饭系列08 try-with-resources
- java炒冷饭系列14 内部类标识符
- java炒冷饭系列05 使用多态时需要注意的几点
- java炒冷饭系列09 内部类的创建和链接到外部类
- java炒冷饭系列12 嵌套类(静态内部类)
- java炒冷饭系列12 接口内部的类 ,从多层嵌套类中访问外部类的成员
- java方法的重载
- Java 8 Streams map 示例
- 阿里巴巴SOA服务化治理方案的核心框架-Dubbo
- SQL Server 如何启用sa账户
- ubuntu 下 完全卸载vim
- sql-function
- java炒冷饭系列01 方法的重载
- bzoj3713
- 父亲写的散文诗(李健)
- 享元模式以及反射的入门学习
- NAT技术调研
- Ubuntu SSH反向隧道从外网连接内网
- 数据库限定查询语法以及操作及范例
- 打开NETBEANS 时提示: cannot locate java installation in specified jdkhome
- random函数