Java方法之重载

本篇探究Java中的方法重载。那么,什么是重载呢?先上一串代码:

package com.my.pac06;

/**
* @author Summerday
* @date 2019/12/2 19:46
*/
public class OverloadTest { public static void main(String[] args) {
Overload overload = new Overload();
//调用public void test():无参数
overload.test();
//调用 public void test(String arg):arg= overloading...
overload.test("overloading...");
//调用public void test(int arg):arg= 10
overload.test(10);
//调用形参长度可变的方法
overload.test(new int[]{10});
//调用形参长度可变的方法
overload.test(1, 2, 3, 4, 5); } } class Overload {
public void test() {
System.out.println("调用public void test():无参数");
} public void test(String arg) {
System.out.println("调用 public void test(String arg):arg= " + arg);
} //false:public int test(){}
//false: private void test(){}
public void test(int arg) {
System.out.println("调用public void test(int arg):arg= " + arg);
} //false:public void test(int par)
//包含参数长度可变的情况
public void test(int... args) {
System.out.println("调用形参长度可变的方法");
} }

我们知道,一个方法的创建包含了 修饰符,返回类型,方法名,参数列表等多项,只要同一个类中,两个或两个以上的方法的方法名相同,参数不同,就出现了重载现象。

方法名相同很好理解,参数不同指的是可以是参数类型不同,也可以是参数个数不同。如下:

//方法名相同,参数类型、个数均不同
public void test(){};
public void test(int arg){};
//方法名相同,参数类型不同
public void test(int arg){};
public void test(String arg){};
//方法名相同,参数个数不同
public void test(int arg){};
public void test(int... args){};

参数名不同不算!!!如下:

//不能构成重载,因为方法名和参数类型个数均相同
public void test(int arg){};
public void test(int par){};

仅仅返回值类型不同,不可以重载。 如下:

//仅仅返回值类型不同,不可重载
public void test(){};
public int test(){};

仅仅修饰符不同,也没用,如下:

//仅仅修饰符不同,不可重载
public void test(){};
private void test(){};

如果重载情况中同时出现形参可变和指定形参个数的情况,如果目标个数明确,那么直接锁定目标;如果不是才考虑形参可变的情况,跟定义的位置无关。

public void test(int arg) {
System.out.println("调用public void test(int arg):arg= " + arg);
}
//包含参数长度可变的情况
public void test(int... args) {
System.out.println("调用形参长度可变的方法");
}
 //调用public void test(int arg):arg= 10
overload.test(10);
//调用形参长度可变的方法
overload.test(1, 2, 3, 4, 5);

注:如果上述情况非要传入一个数,且让他执行形参长度可变的那个方法,可以将他转换为存储一个数的数组,可以尝试如下方法:

//调用形参可变的方法
overload.test(new int[]{10});

但是大部分时候,都不建议重载参数长度可变的方法,没必要。


关于为什么仅仅返回值类型不同不能构成重载条件的原因:

Java中方法在调用时,可以忽略方法的返回值,也就是说,public int test(){}public void test(){}两个方法在调用的时候,都只需要写上test();,并没有提及返回值,而造成迷惑。

Java方法之重载的更多相关文章

  1. java方法的重载

    java方法的重载 public class Person1 {    private String name; //姓名    private int age;      //年龄    priva ...

  2. JAVA方法的重载(overload)和覆盖(override)

    方法的重载(overload)和覆盖(override) 有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println() ...

  3. java方法重写规则 重载

    方法的重写规则 参数列表必须完全与被重写方法的相同: 返回类型必须完全与被重写方法的返回类型相同: 访问权限不能比父类中被重写的方法的访问权限更低.例如:如果父类的一个方法被声明为public,那么在 ...

  4. Java 方法的重载及引用数据类型(类)

    方法的重载 我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法. Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数 ...

  5. 详解java方法的重载

    1.方法的重载: 方法名相同,参数列表不同就叫做方法的重载.

  6. java 方法的重载

    方法的重载:一个类中允许出现一个以上的同名方法,必须保证同名方法的参数列表不同    好处:方便阅读,优化程序设计    重载规则:重载方法名相同,但每个重载方法都必须有一个独一无二的参数类型列表,方 ...

  7. Java基础---Java方法的重载Overload

    对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦. 方法的重载(Overload):多个方法的名称一样,但是参数列表不一样.好处:只需要记住唯一一个方法名称,就可以实 ...

  8. java 方法的重载重写

    面向对象有三大特性:封装,继承,多态 多态则需要满足三大条件1要有继承2要有重写3父类引用子类对象 很多人对方法的重载重写有很大疑问,下面我来介绍一下方法的重载重写 方法重载就是方法名称重复,加载参数 ...

  9. java 方法的重载的语法规则

    class People { float hello(int a,int b) { return a+b; } float hello(long a,int b) { return a-b; } do ...

随机推荐

  1. linux虚拟机中FTP本地用户模式配置流程

    1.首先在自己虚拟机中安装vsftpd服务,可以先去yum中下载(当然你要有本地yum仓库) 输入命令: yum  install  vsftpd 下载完成之后打开vsftpd服务 输入命令:syst ...

  2. .NET进阶篇06-async异步、thread多线程4

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 梯子 一.锁1.lock2.Interlocked3.Monitor4.SpinLock5.Mutex6.Semaphore7.Events1. ...

  3. Netty学习——基于netty实现简单的客户端聊天小程序

    Netty学习——基于netty实现简单的客户端聊天小程序 效果图,聊天程序展示 (TCP编程实现) 后端代码: package com.dawa.netty.chatexample; import ...

  4. Semaphore回顾

    用途 在多线程访问可变变量时,是非线程安全的.可能导致程序崩溃.此时,可以通过使用信号量(semaphore)技术,保证多线程处理某段代码时,后面线程等待前面线程执行,保证了多线程的安全性.使用方法记 ...

  5. Ctrl + Shift + F7 ; F3、Shift + F3

    pycharm 查找并高亮参数 选中某一参数,Ctrl + Shift + F7  高亮所有该文件中所有该参数 接下来, 按 F3 在所有高亮选择中向下移动一个, Shift + F3 在所有高亮选择 ...

  6. Seata AT 模式启动源码分析

    从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM.TM.TC),接下来我会更新 Seata 源码分析系列文章. ...

  7. luogu P1807 最长路_NOI导刊2010提高(07)

    题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入格式 ...

  8. 第一节知识点:.net与c#的概念

    1.什么是.net          .net一般指的是.NET Framework框架,一种平台,一种技术:.NET 是微软的新一代技术平台,以构建互联互通的应用系统.这些应用程序的开发和运行必须有 ...

  9. ARTS-S linux常用命令

    压缩 把文件夹test压缩成test.tar.gz tar -czvf test.tar.gz test centos同步网上时间 cp /usr/share/zoneinfo/Asia/Shangh ...

  10. 利用Bootstrap搭建网站页面

    先来看下页面效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...