详解:Java的重载方法与示例

3.参数的数据类型顺序。

例如:

add(int, float)

add(float, int)

方法重载的无效情况:

当我说参数列表时,我不是在说方法的返回类型,例如,如果两个方法具有相同的名称,相同的参数并且具有不同的返回类型,那么这不是有效的方法重载示例。这将引发编译错误。

int add(int, int)

float add(int, int)

方法重载是静态多态性一个示例。我们将在单独的教程中讨论多态性及其类型。

注意事项:

1. 静态多态也称为编译时绑定或早期绑定。

2. 静态绑定发生在编译时。方法重载是静态绑定的一个示例,其中方法调用对其定义的绑定发生在编译时。

方法重载示例


如本指南开头所讨论的,方法重载是通过声明具有不同参数的相同方法来完成的。参数必须在以下两个方面有所不同:参数(或参数)的数量,顺序或类型。让我们看一下每种情况的示例。

参数列表也称为参数列表

示例1:重载–参数列表中的参数数量不同

此示例说明如何通过具有不同数量的参数来完成方法重载

class DisplayOverloading

{

public void disp(char c)

{

System.out.println©;

}

public void disp(char c, int num)

{

System.out.println(c + " "+num);

}

}

class Sample

{

public static void main(String args[])

{

DisplayOverloading obj = new DisplayOverloading();

obj.disp(‘a’);

obj.disp(‘a’,10);

}

}

输出:

a

a 10

在上面的示例中-方法disp()根据参数数量而重载-我们有两种方法的名称,disp但它们具有的参数不同。两者都有不同数量的参数。

示例2:重载–参数数据类型的差异

在此示例中,方法disp()基于参数的数据类型进行了重载–我们有两种名称为disp()的方法,一种具有char类型的参数,另一种具有int类型的参数。

class DisplayOverloading2

{

public void disp(char c)

{

System.out.println©;

}

public void disp(int c)

{

System.out.println(c );

}

}

class Sample2

{

public static void main(String args[])

{

DisplayOverloading2 obj = new DisplayOverloading2();

obj.disp(‘a’);

obj.disp(5);

}

}

输出:

a

5

例3:重载–参数的数据类型顺序

在此,disp()根据参数的数据类型顺序重载方法–两种方法在参数列表中都有不同的数据类型顺序。第一种方法的参数列表为(char,int),第二种方法的参数为(int,char)。由于顺序不同,因此该方法可以重载而不会出现任何问题。

class DisplayOverloading3

{

public void disp(char c, int num)

{

System.out.println(“I’m the first definition of method disp”);

}

public void disp(int num, char c)

{

System.out.println(“I’m the second definition of method disp” );

}

}

class Sample3

{

public static void main(String args[])

{

DisplayOverloading3 obj = new DisplayOverloading3();

obj.disp(‘x’, 51 );

obj.disp(52, ‘y’);

}

}

输出:

I’m the first definition of method disp

I’m the second definition of method disp

方法重载和类型提升


例如,当将较小大小的数据类型提升为大于此大小的数据类型称为类型提升时,例如:字节数据类型可以提升为short,short数据类型可以提升为int,long,double等。

它与方法重载有什么关系?

好吧,了解类型提升非常重要,否则您会认为程序会引发编译错误,但实际上由于类型提升,程序可以正常运行。

让我们举个例子看看我在这里说什么:

class Demo{

void disp(int a, double b){

System.out.println(“Method A”);

}

void disp(int a, double b, double c){

System.out.println(“Method B”);

}

public static void main(String args[]){

Demo obj = new Demo();

/* I am passing float value as a second argument but

  • it got promoted to the type double, because there

  • wasn’t any method having arg list as (int, float)

*/

obj.disp(100, 20.67f);

}

}

输出:

Method A

如您所见,我在调用disp()方法时传递了float值,但是由于没有任何参数列表为(int,float)的方法,它被提升为double类型。

但是这种类型的促销并不总是会发生,让我们看另一个例子:

class Demo{

void disp(int a, double b){

System.out.println(“Method A”);

}

void disp(int a, double b, double c){

System.out.println(“Method B”);

}

void disp(int a, float b){

System.out.println(“Method C”);

}

public static void main(String args[]){

Demo obj = new Demo();

/* This time promotion won’t happen as there is

  • a method with arg list as (int, float)

*/

obj.disp(100, 20.67f);

}

}

输出:

Method C

如您所见,由于存在一个具有匹配参数类型的方法,因此没有发生这种类型的升级。

类型提升表:

左侧的数据类型可以提升为右侧的任何数据类型。

最后

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

image

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!
disp(100, 20.67f);

}

}

输出:

Method C

如您所见,由于存在一个具有匹配参数类型的方法,因此没有发生这种类型的升级。

类型提升表:

左侧的数据类型可以提升为右侧的任何数据类型。

最后

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

[外链图片转存中…(img-WdLKPlip-1721840433048)]

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值