Java 重载与重写相关问题

2018-08-23  本文已影响13人  07120665a058
重写是:子类继承父类,重写父类的方法,要求方法名和参数列表都相同
重载是:相同的方法名称,不同的方法签名(参数列表不同:包括个数/类型/顺序)返回类型不影响
方法重载,在编译时确定调用哪个方法
方法重写,在运行时确定调用的是子类还是父类的方法
class OverloadingFixture{
    public String method(Object string){
        return "Object";
    }
    public String method(String string){
        return "String";
    } 
}

OverloadingFixture overloading = new OverloadingFixture();
String actual = overloading.method((Object) "i am string");
final String expected = "Object";
assertEquals(expected, actual);
基本类型:默认会自动从“短类型”扩展成“长类型”,如果没有精确匹配,优先匹配 存储长度 大于且最接近的
引用类型:如果没有精确匹配,优先匹配 在继承树结构上,离实参类型最近的
总结:当前类型(基本类型或引用类型 > 自动装箱拆箱 > 可变参数列表
自动装箱:Java自动将原始类型转换成对应的对象,比如:将int类型值转换成Integer对象
自动拆箱:将对象转换为原始类型,比如:Integer对象转换成int类型值
自动装箱时:编译器调用 valueOf 将原始类型值转换成对象
自动拆箱时:编译器调用类似 intValue(), doubleValue() 这类方法将对象转换成原始类型值
使用...表示可变长参数,比如:Object… 
可变长参数必须是该方法的最后一个参数
编译器在传递的时候,会将参数列表包裹成对象数组,如果本身已经是对象数组编译器就不会进行包裹

类与接口(四)方法重载解析
Java中的自动装箱与拆箱

上一篇下一篇

猜你喜欢

热点阅读