Java方法之重载
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方法之重载的更多相关文章
- java方法的重载
java方法的重载 public class Person1 { private String name; //姓名 private int age; //年龄 priva ...
- JAVA方法的重载(overload)和覆盖(override)
方法的重载(overload)和覆盖(override) 有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println() ...
- java方法重写规则 重载
方法的重写规则 参数列表必须完全与被重写方法的相同: 返回类型必须完全与被重写方法的返回类型相同: 访问权限不能比父类中被重写的方法的访问权限更低.例如:如果父类的一个方法被声明为public,那么在 ...
- Java 方法的重载及引用数据类型(类)
方法的重载 我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法. Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数 ...
- 详解java方法的重载
1.方法的重载: 方法名相同,参数列表不同就叫做方法的重载.
- java 方法的重载
方法的重载:一个类中允许出现一个以上的同名方法,必须保证同名方法的参数列表不同 好处:方便阅读,优化程序设计 重载规则:重载方法名相同,但每个重载方法都必须有一个独一无二的参数类型列表,方 ...
- Java基础---Java方法的重载Overload
对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦. 方法的重载(Overload):多个方法的名称一样,但是参数列表不一样.好处:只需要记住唯一一个方法名称,就可以实 ...
- java 方法的重载重写
面向对象有三大特性:封装,继承,多态 多态则需要满足三大条件1要有继承2要有重写3父类引用子类对象 很多人对方法的重载重写有很大疑问,下面我来介绍一下方法的重载重写 方法重载就是方法名称重复,加载参数 ...
- java 方法的重载的语法规则
class People { float hello(int a,int b) { return a+b; } float hello(long a,int b) { return a-b; } do ...
随机推荐
- 在jsp页面中设置中序号
首先要使用<c>标签的话需要先引入下面这句话: <%@ taglib prefix="c" uri="http://Java.sun.com/jsp/j ...
- IDEA IntelliJ/ DataGrip 修改自动补全快捷键
系统默认的是Tab键,个人喜欢用空格键作为自动补全键,设置方法如下 Setting-->Keymap-->Editor Actions:Choose Lookup Item Replace ...
- Python中的Base64编码的加密与解密
Base64 可以干些啥? Base64编码的作用: 由于某些系统中只能使用ASCII字符.Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法. 图片(and种子)base64 ...
- “智慧海绵城市”(SSC)监测评价体系整体解决方案
一.方案简介 无论是内涝防治.黑臭水体治理,还是海绵城市规划设计及建设.评估,乃至未来智慧城市的建设,都需要有全面.致密.大量的城市水文监测数据和先进模拟仿真技术作基础支撑,唯有如此,决策才有据可依, ...
- Android Selector和Shape的用法
一.Shape的用法 :shape用于设定形状,可以在selector,layout等里面使用,有6个子标签,各属性如下: 填充:设置填充的颜色 间隔:设置四个方向上的间隔 大小:设置大小 圆角:同时 ...
- luogu P5414 [YNOI2019]排序 |动态规划
题目描述 对于一个数列{7, 1, 2, 3}进行排序,我们可以把7 从头移动到尾.但是这个操作的成本是7,并不是最佳的.最佳的排序方式是将连续的1.2.3 移动到7 的前面.这样的话,总的操作成本就 ...
- 初始CSS3 实例
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- 2019牛客全国多校第八场A题 All-one Matrices(单调栈)
题意:让你找最大不可扩展全1子矩阵的数量: 题解:考虑枚举每一行为全1子矩阵的的底,然后从左到右枚举:up[i][j]:表示(i,j)这个位置向上可扩展多少,同时还有记录每个位置(i,j)向左最多可扩 ...
- BZOJ1014 火星人的prefix
火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 7 8 9 10 11 字 ...
- HDU3191-How many paths are there(次短路的长度及其个数)
oooccc1 is a Software Engineer who has to ride to the work place every Monday through Friday. For a ...