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

对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。

方法的重载(Overload)多个方法的名称一样,但是参数列表不一样。
好处:只需要记住唯一一个方法名称,就可以实现类似的多个功能。

方法重载与下列因素相关:
  1. 参数个数不同
  2. 参数类型不同
  3. 参数的多类型顺序不同

方法重载与下列因素无关:
  1. 与参数的名称无关
  2. 与方法的返回值类型无关

 1 public class DemoMethodOverload {
 2
 3     public static void main(String[] args) {
 4         /*System.out.println(sumTwo(10, 20)); // 30
 5         System.out.println(sumThree(10, 20, 30)); // 60
 6         System.out.println(sumFour(10, 20, 30, 40)); // 100*/
 7
 8         System.out.println(sum(10, 20)); // 两个参数的方法
 9         System.out.println(sum(10, 20, 30)); // 三个参数的方法
10         System.out.println(sum(10, 20, 30, 40)); // 四个参数的方法
11 //        System.out.println(sum(10, 20, 30, 40, 50)); // 找不到任何方法来匹配,所以错误!
12
13         sum(10, 20);
14     }
15
16     public static int sum(int a, double b) {
17         return (int) (a + b);
18     }
19
20     public static int sum(double a, int b) {
21         return (int) (a + b);
22     }
23
24     public static int sum(int a, int b) {
25         System.out.println("有2个参数的方法执行!");
26         return a + b;
27     }
28
29     // 错误写法!与方法的返回值类型无关
30 //    public static double sum(int a, int b) {
31 //        return a + b + 0.0;
32 //    }
33
34     // 错误写法!与参数的名称无关
35 //    public static int sum(int x, int y) {
36 //        return x + y;
37 //    }
38
39     public static int sum(double a, double b) {
40         return (int) (a + b);
41     }
42
43     public static int sum(int a, int b, int c) {
44         System.out.println("有3个参数的方法执行!");
45         return a + b + c;
46     }
47
48     public static int sum(int a, int b, int c, int d) {
49         System.out.println("有4个参数的方法执行!");
50         return a + b + c + d;
51     }
52
53 }

题目要求:
比较两个数据是否相等。
参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,
并在main方法中进行测试。

 1 public class Demo02MethodOverloadSame {
 2
 3     public static void main(String[] args) {
 4         byte a = 10;
 5         byte b = 20;
 6         System.out.println(isSame(a, b));
 7
 8         System.out.println(isSame((short) 20, (short) 20));
 9
10         System.out.println(isSame(11, 12));
11
12         System.out.println(isSame(10L, 10L));
13     }
14
15     public static boolean isSame(byte a, byte b) {
16         System.out.println("两个byte参数的方法执行!");
17         boolean same;
18         if (a == b) {
19             same = true;
20         } else {
21             same = false;
22         }
23         return same;
24     }
25
26     public static boolean isSame(short a, short b) {
27         System.out.println("两个short参数的方法执行!");
28         boolean same = a == b ? true : false;
29         return same;
30     }
31
32     public static boolean isSame(int a, int b) {
33         System.out.println("两个int参数的方法执行!");
34         return a == b;
35     }
36
37     public static boolean isSame(long a, long b) {
38         System.out.println("两个long参数的方法执行!");
39         if (a == b) {
40             return true;
41         } else {
42             return false;
43         }
44     }
45
46 }

判断方法是否能够重载

 1 public class Demo03OverloadJudge {
 2     public static void open(){} // 正确重载
 3     public static void open(int a){} // 正确重载
 4     static void open(int a,int b){} // 代码错误:和第8行冲突
 5     public static void open(double a,int b){} // 正确重载
 6     public static void open(int a,double b){} // 代码错误:和第6行冲突
 7     public void open(int i,double d){} // 代码错误:和第5行冲突
 8     public static void OPEN(){} // 代码正确不会报错,但是并不是有效重载
 9     public static void open(int i,int j){} // 代码错误:和第3行冲突
10 }

原文地址:https://www.cnblogs.com/hoganhome/p/11487420.html

时间: 2024-10-10 05:58:48

Java基础---Java方法的重载Overload的相关文章

JAVA中继承时方法的重载(overload)与重写/覆写(override)

JAVA继承时方法的重载(overload)与重写/覆写(override) 重载-Override 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就说两个函数是重载函数,而至于返回值是否一样,没关系.同时,重载可以发生在同一个类中也可以发生在继承关系中. class A { } class B extends A { public void fun(String data1) { System.out.println(data1); } pub

1.28 Java基础总结 ①方法重载②构造方法

1.28 Java基础总结 ①方法重载②构造方法 一.方法的重载在同一个类中,方法名相同,形参列表不同访问修饰符.返回类型和是否重载无关:按顺序对应的形参列表类型不同即可 二.构造器在类创建一个实例时被调用,构造方法只能用new关键字调用目的:初始化实例,初始化类属性(0,0.0,null,false)无返回值,和类名一致,用来构造对象作用:为对象分配内存, 创建并初始化成员变量(通过类创建,所以可以在static方法中调用构造方法) 返回引用,引用.属性:引用.方法(所以无返回值) 三.构造方

Java 基础知识之-------------Override 与 Overload

override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用.对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法.除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法.在覆盖要注意以下的几点: 1.覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果: 2.覆盖的方法的返回值必须和被覆盖的方法的返回一致: 3.覆盖的方法所抛出的异常必须和被覆盖方法的所抛

Java基础02 方法与数据成员(转载)

对象中的数据成员表示对象的状态.对象可以执行方法,表示特定的动作. 此外,我们还了解了类(class).同一类的对象属于相同的类型(type).我们可以定义类,并使用该定义来产生对象. 调用同一对象的数据成员 方法可以调用该对象的数据成员.比如下面我们给Human类增加一个getHeight()的方法.该方法返回height数据成员的值: public class Test{    public static void main(String[] args){        Human aPer

程序猿二三事之Java基础--Java SE 5增加的特性--语法篇(一)

程序猿二三事之Java基础–Java SE 5增加的特性–语法篇(一) [ TOC ] 为什么是Java SE 5? 目前已经到了JDK-8u74了,JDK7的主版本已经于2015年4月停止公开更新. 那为什么还要来说Java/JDK5呢? Java SE在1.4(2002)趋于成熟,随着越来越多应用于开发企业应用,许多框架诞生于这个时期或走向成熟. Java SE 5.0的发布(2004)在语法层面增加了很多特性,让开发更高效,代码更整洁. 自动装箱/拆箱.泛型.注解.for循环增强.枚举.可

[Java基础] Java线程复习笔记

先说说线程和进程,现代操作系统几乎无一例外地采用进程的概念,进程之间基本上可以认为是相互独立的,共享的资源非常少.线程可以认为是轻量级的进 程,充分地利用线程可以使得同一个进程中执行多种任务.Java是第一个在语言层面就支持线程操作的主流编程语言.和进程类似,线程也是各自独立的,有自 己的栈,自己的局部变量,自己的程序执行并行路径,但线程的独立性又没有进程那么强,它们共享内存,文件资源,以及其他进程层面的状态等.同一个进程内的 多个线程共享同样的内存空间,这也就意味着这些线程可以访问同样的变量和

Java基础--Java编程规范

IsCoder 标记: Java基础,Java编程规范 摘要:Java虽然没有强制性的编程规范,但是为了便于统一,Java有不成文的编程规范,为了形成良好的编程习惯,建议熟悉并遵守Java编程规范,提高代码的阅读性. 一.Java标识符 在任何语言中,都要自己的一套标识符规则.Java的标识符包括:Java关键字.Java特殊功能的标识符.合法的用户自定义标识符.其中,我们能改变的只有自定义的标识符,和大部分计算机编程语言一样,Java标识符原始只支持ASCII的编码,但是随着Java在世界的影

[Java基础] Java float保留两位小数或多位小数

方法1:用Math.round计算,这里返回的数字格式的. float price=89.89; int itemNum=3; float totalPrice=price*itemNum; float num=(float)(Math.round(totalPrice*100)/100);//如果要求精确4位就*10000然后/10000 方法2:用DecimalFormat 返回的是String格式的.该类对十进制进行全面的封装.像%号,千分位,小数精度.科学计算. float price=

Java基础----Java API中的常用类

System:描述系统的一些信息 preperties();获取系统信息 Properties prop =new System.getProperties(); 是hashtable 的子类.用map的方法去除该类集合中的元素.该集合中存储的都是字符串,没有泛型定义. String calue=(String)prop.get(obj); System.out.println(obj+":"+value); //如何在系统中自定义一些特有信息? System.setProperty(

java基础---->java中正则表达式二

跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下: Pattern pattern = Pattern.compile("^[^abc]h$"); Matcher matcher = pattern.matcher("hh"); boolean isMatch = matcher.matches(); 另外一种不能复