您的位置:首页 > 编程语言 > Java开发

java 方法重载和方法重写

2017-05-12 10:52 232 查看

方法重载

方法重载的特点:两同一不同,即同一个类中方法名相同,参数列表不同。

public class Overload {
//下面定义了两个test()方法,但方法的形参列表不同
//方法重载
public void test(){
System.out.println("无参数");
}
public void test(String msg){
System.out.println("重载的test方法" + msg);
}
public static void main(String[] args){
Overload ol = new Overload();
ol.test();
ol.test("Hello");
}
}


特别注意:java里不能用方法返回值类型作为区分方法重载的依据。

方法重写

public class Bird {

//Bird类的fly方法
public void fly(){
System.out.println("我在天空里自由自在的飞翔");
}

}


public class Ostrich extends Bird{

//重写Bird类的fly方法
public void fly(){
System.out.println("我只能在地上奔跑");
}

public static void main(String[] args) {
//创建Ostrich对象
Ostrich os = new Ostrich();
//执行Ostrich对象的fly()方法
os.fly();
}

}


方法重写遵循“两同两小一大”规则,

“两同”即方法名相同,形参列表相同;

“两小”指的是子类方法返回值类型应比父类返回值类型更小或相等,

子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;

“一大” 指的是子类方法的访问权限应比父类方法的访问权限更大或相等。

总结

方法重载:overload

方法重写:override

两者区分的关键在于:方法重载发生在同一个类中多个同名方法之间,

方法重写发生在子类和父类的同名方法之间。

当然,父类和子类方法之间也可能发生重载,因为子类会获得父类方法,如果子类定义了一个与父类方法有相同的方法名,但参数列表不同的方法,就会形成父类方法和子类方法的重载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息