- 重载是静态分配的一种体现。
- 何为静态分配:例:Parent p =new Child();我们把表达式左侧的Parent 就称为静态类型/外观类型,右侧的Child称为实际类型,静态类型在编译期间就是可知的,而实际类型在运行期间才是可知的。
- 方法版本:即就是要调用哪个方法
- 有以静态类型来定位方法执行版本的分派称为静态分派。 如多态,到底执行哪个子类还是父亲类的方法,要在运行时候才可以确定
- 以下代码执行结果是是什么? 答案:打印 hello char
-
import java.io.Serializable;
public class OverLoadDemo {
public static void sayHello(Object o) {
System.out.println("hello Object");
}public static void sayHello(int o) {
System.out.println("hello int");
}public static void sayHello(long o) {
System.out.println("hello long");
}public static void sayHello(float o) {
System.out.println("hello float");
}public static void sayHello(double o) {
System.out.println("hello double");
}public static void sayHello(char o) {
System.out.println("hello char");
}public static void sayHello(Character o) {
System.out.println("hello Character");
}public static void sayHello(char... o) {
System.out.println("hello char...........");
}public static void sayHello(Serializable o) {
System.out.println("hello Serializable");
}/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
sayHello('a');
}}
-
但如果把 sayHello(char o)注释掉会打印 hello int
-
sayHello(int o)注释掉打印 hello long
-
sayHello(long o) 注释掉打印 hello float
-
sayHello注释掉 打印 hello double
-
sayHello(double o)注释掉 打印 hello Character
-
sayHello(Character o) 注释掉 打印hello Character
-
sayHello(Serializable o) 注释掉 打印 hello Object
-
sayHello(Object o) 注释掉 打印 hello char...........
char-》int=》long=》float=》double顺序进行转化
你真的了解重载吗?重载的本质是什么?
最新推荐文章于 2022-11-13 16:41:44 发布