在这里主要想讨论一下多态中的重载[overload]
即:参数和个数,类型,顺序来决定函数的选择
注:返回值的不同不能算做重载
常见的参数个数不一样 和 参数为两个完全不一样类型时的重载也不讨论,下面讨论一下不容易区分的一些情况
例1。
static void f(float f){}
static void f(double d){}
public static void main(String args[]){
f(66);
}
此时会调用哪个呢,这就由重载决议来决定了
重载协议包括:
1) 由参数的个数,类型和顺序来决定 [一般情况]
2) 重载方法必须是可以被调用的
例子
class A{
public static void f(float f, double d){}
private static void f(double d,float f){}
}
则 A.f(1,2); //肯定是调用第一个函数,第二个函数永远调不到
3)精确性原则
如果几个函数的参数都适合时,如果第1个方法参数类型都可以赋给第2个方法,而第2个方法的参数不可以赋给第1个
方法时,第1个方法被保留,重复这个筛选过程,只到最后剩下最后一个方法为止,如果最后有两个方法不能取舍时,则
编译器会报编译错误
这里要记住自动发生的转换: byte -> short -> int -> long -> float -> double
通过上面这里,了解到最开始地个题目是执行float那个方法