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. 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志

    6月27日任务 16.4 配置Tomcat监听80端口16.5/16.6/16.7 配置Tomcat虚拟主机16.8 Tomcat日志扩展邱李的tomcat文档 https://www.linuser ...

  2. Layui下拉3级联动

    这里我就不给大家详细说明了直接附图: js代码: layui.use(['layer', 'form','xform','layer'], function () { var element = la ...

  3. SpringBoot系列之集成jsp模板引擎

    目录 1.模板引擎简介 2.环境准备 4.源码原理简介 SpringBoot系列之集成jsp模板引擎 @ 1.模板引擎简介 引用百度百科的模板引擎解释: 模板引擎(这里特指用于Web开发的模板引擎)是 ...

  4. 【Python成长之路】python 基础篇 -- global/nonlocal关键字使用

    1 课程起源 有一次在工作中编写python工具时,遇到一个 问题:从配置文件读取变量A后,无法在内存中把A的值改变成新的内容.为了解决"更新内存中变量"的这个问题,查找了一些帖子 ...

  5. 西瓜哥:公有云也“All-Flash”?

    本文转载自 高端存储知识 Gartner在2018年Market Insight: Preparing for the SSD Rise and HDD Demise一文中指出:当闪存介质降到HDD每 ...

  6. Python爬虫实战之爬取糗事百科段子

    首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...

  7. Docker数据挂载

    Docker数据管理 在容器中管理数据主要有两种方式: 数据卷(Volumes) 挂载主机目录(Bind mounts) 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很 ...

  8. mac os 搭建私有DNS 之 dnsmasq

    - MAC OS 创建私有DNS 仓库 - 使用场景 实际工作中有一些私有的域名需要修改host才可以访问 例如:localhost.dev develop-test.dev - 安装方法 brew ...

  9. Docker系列-(1) 原理与基本操作

    Docker是一个开源的应用容器引擎,基于Go语言,并遵从Apache2.0协议开源. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器 ...

  10. 【JPA】开始

    Java SE中使用 实体Bean package cn.ycx.entity; import javax.persistence.Entity; import javax.persistence.I ...