Java普通方法重载

2022/1/17 22:03:40

本文主要是介绍Java普通方法重载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

【转载自本科老师上课课件】

调用一个重载过的方法时,Java编译程序是如何确定究竟应该调用哪一个方法?以下代码定义了三个重载方法:

public void f(char ch){ System.out.println(“char!”); }
public void f(short sh){ System.out.println(“short!”); }
public void f(float f){ System.out.println(“float!”); }

当调用语句 f((byte)65); 时,到底调用的是上述哪一个方法?
  这个问题其实就是在“方法调用时发生的类型转换”,即在方法调用上下文中产生的类型转换。其类型转换是按“基本数据类型宽转换”进行。若“宽转换”不成功,再进行“装箱”和“拆箱”类型转换。
  按“宽转换”,byte可自动转换成short或float,但short比float更特殊。特殊的含义是:short能够宽转换到float,反之不行。故最终调用的是方法:public void f(short sh){…};
再如:

public void f(Object o){…}
public void f(int[] ia){…}

当调用语句 f(null); 时,应调用哪一个方法?

  由于空引用null可自动转换到int[]类型,也可自动转换到Objec类型。但int[]数组类型更特殊(即:int[]数组类型是一个Object类型,但Object不是int[]数组),故最终调用的是f(int[] ia)方法。



这篇关于Java普通方法重载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程