Java知多少(22)方法重载

在Java中,同一个类中的多个方法可以有相同的名字,只要它们的参数列表不同就可以,这被称为方法重载(method overloading)。

参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。

重载是面向对象的一个基本特性。

下面看一个详细的实例。

 1 public class Demo{
 2     // 一个普通的方法,不带参数
 3     void test(){
 4         System.out.println("No parameters");
 5     }
 6     // 重载上面的方法,并且带了一个整型参数
 7     void test(int a){
 8         System.out.println("a: " + a);
 9     }
10     // 重载上面的方法,并且带了两个参数
11     void test(int a,int b){
12         System.out.println("a and b: " + a + " " + b);
13     }
14     // 重载上面的方法,并且带了一个双精度参数
15     double test(double a){
16         System.out.println("double a: " + a);
17         return a*a;
18     }
19
20     public static void main(String args[]){
21         Demo obj= new Demo();
22         obj.test();
23         obj.test(2);
24         obj.test(2,3);
25         obj.test(2.0);
26     }
27 }

运行结果:
No parameters
a: 2
a and b: 2 3
double a: 2.0

通过上面的实例,读者可以看出,重载就是在一个类中,有相同的函数名称,但形参不同的函数。重载的结果,可以让一个程序段尽量减少代码和方法的种类。

说明:

  • 参数列表不同包括:个数不同、类型不同和顺序不同。
  • 仅仅参数变量名称不同是不可以的。
  • 跟成员方法一样,构造方法也可以重载。
  • 声明为final的方法不能被重载。
  • 声明为static的方法不能被重载,但是能够被再次声明。

方法的重载的规则:

  • 方法名称必须相同。
  • 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
  • 方法的返回类型可以相同也可以不相同。
  • 仅仅返回类型不同不足以成为方法的重载。

方法重载的实现:
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错,这叫做重载分辨。

系列文章:

Java知多少(1)语言概述

Java知多少(2)虚拟机(JVM)以及跨平台原理

Java知多少(3) 就业方向

Java知多少(4)J2SE、J2EE、J2ME的区别

Java知多少(5) Java开发环境的搭建

Java知多少(6)第一个程序示例

Java知多少(7)类与对象

Java知多少(8)类库及其组织结构

Java知多少(9) import及Java类的搜索路径

Java知多少(10)数据类型及变量

Java知多少(11)数据类型转换

Java知多少(12)运算符

Java知多少(13)流程控制

Java知多少(14)数组

Java知多少(15)字符串

Java知多少(16)StringBuffer与StringBuider

Java知多少(17)强调一下编程风格

Java知多少(18)类的定义及其实例化

Java知多少(19)访问修饰符(访问控制符)

Java知多少(20)变量的作用域

Java知多少(21)this关键字详解

Java知多少(22)方法重载

时间: 2024-10-20 11:16:49

Java知多少(22)方法重载的相关文章

Java学习笔记之方法重载,动态方法调度和抽象类

一.方法重载 如果子类中的方法与它的超类中的方法有相同的方法名,则称子类中的方法重载超类中的方法,特别是当超类和子类中的方法名和参数类型都相同时,在子类中调用该方法时,超类中的方法会被隐藏.考虑下面程序: 1 class A 2 { 3 int i, j; 4 A(int a, int b) 5 { 6 i = a; 7 j = b; 8 } 9 10 // display i and j 11 void show() 12 { 13 System.out.println("i and j: &

学java教程之普通方法重载

学编程吧学java教程之普通方法重载发布了,欢迎通过xuebiancheng8.com来访问 先来看什么是普通方法重载呢,先来看一个例子 public class Person{ String username; int age; public void hello(){ System.out.println("Hello"); } public void hello(String username){ System.out.println("你好"+usernam

java面向对象中的方法重载与方法重写的区别

一.方法重载(overload) a:一个类中允许声明多个方法 b:一个类中允许有多个方法名称一样,但是参数不同的多个方法.通过参数不同来区别不同的方法. 参数不同表现为: 1:参数个数不同 2:参数类型不同 3:参数类型的顺序不同也是参数类型不同 4:在参数类型一样的情况下,名称不一样不代表参数不一样 重载方法的调用: 1:根据调用的时候实际参数来判断到底调用的是哪一方法 2:根据参数的要求,严格匹配传入的对应类型 3:如果严格匹配不到的话,默认遵循就近匹配 4:根据数据默认转换的顺序就近匹配

Java学习笔记之方法重载

被重载的方法必须具有不同的参数列表.不能基于不同修饰符或返回值类型来重载方法. package welcome; public class TestMethodOverloading { public static void main(String[] args) { System.out.println("The maximum between 3 and 4 is " + max(3, 4)); // 调用max(int, int)方法 System.out.println(&qu

Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理

Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理 1. 重载包括:普通方法的重载和构造方法的重载 1 1.1. 横向重载”和“纵向重载”1 1.2. 方法签名通过  方法名称,参数数量,参数类型+返回类型 参数顺序(命名参数)来组成1 1.3. 重载(重新载选方法流程,如下图所示2 2. 重载的实现方法::argus参数 vs  默认值.可选参数法 可选参数3 2.1. __call()函数是php类的默认魔法函数 3 2.2. Java通过反射调用方法重载 执行方法4 2.

C# 方法重载

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 //////////////////////////////////////////////////// 6 // 方法重载: 7 // 1. 方法名称必须相同 8 // 2. 参数个数必须不同(如果参数个数相同,那么类型必须不同) 9 // 3. 参数类型必须不同 10 // 4. 和返回值无关 11 /

Java知多少(29)覆盖和重载

在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类中的相同,那么,新方法被称做覆盖旧方法. 参数列表又叫参数签名,包括参数的类型.参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同. 被覆盖的方法在子类中只能通过super调用. 注意:覆盖不会删除父类中的方法,而是对子类的实例隐藏,暂时不使用. 请看下面的例子: 1 public class

疯狂java学习笔记之面向对象(六) - 构造器重载、方法重载和方法重写

一.方法重载(Overload): Java允许同一个类中定义多个同名方法,只要形参不一样就可以,如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,则被成为方法重载(两同一异). 同时这这里我们需要注意以下两点:  A.方法重载与返回值类型没有任何关系;  B.方法重载与是否有static修饰没有任何关系. 那我们如何才能确定到底调用的哪个方法呢?  A.主调者:明确是谁在调用这个方法,是类还是对象  B.方法名和形参:确定调用哪个方法(由方法名和形参共同决定) 例1: 1 p

Java知多少(98)Graphics类的绘图方法

Graphics类提供基本绘图方法,Graphics2D类提供更强大的绘图能力.本节讲解Graphics类,下节讲解Graphics2D. Graphics类提供基本的几何图形绘制方法,主要有:画线段.画矩形.画圆.画带颜色的图形.画椭圆.画圆弧.画多边形等. 1. 画线在窗口画一条线段,可以使用Graphics类的drawLine()方法:    drawLine(int x1,int y1,int x2,int y2)例如,以下代码在点(3,3)与点(50,50)之间画线段,在点(100,1