重载和重写的区别和用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重载和重写的区别和用法相关的知识,希望对你有一定的参考价值。

1.重载Overload  
             概念是:在一个类中,方法名相同,参数列表不同(可以是类型不同,个数不同,顺序不同)
             作用:屏蔽使用的差异,使用更加灵活丶方便。
    例如:
       

 class overload{
    public void a(){  // 1   
    }
    public void a(int a){ //   2  这里2个3是因为参数类型不同
    }
    public void a(double a){ // 3
    }
    public void a(int a,double b){ //4 这里4 和5是参数 顺序不同
    }
    public void a(double a,int b){//5 
    }
    public void a(int a,int b,int c){//6 这里和上面是个数不同
    }
}



注意:在实际使用中,会遇到数据类型自动提升的问题
例如:
   

 public class Overload {
    public static void main(String[] args) {
    ad s = new ad();
    //这里传入的参数是 int 和 double类型,而下面没有对应的
    s.a(3,3.0); //结果是world
    // 这里传入二个int 类型
    s.a(3, 3); // 结果是hello
    }
}
class ad{
    public void a(double a,int b){
    System.out.println("hello");
}
public void a(double a,double b){
    System.out.println("world");
    }
}

结论: 首先和传入参数相匹配的进行匹配,如果没有相只对应的类型,会向比传入类型范围大的选择。 
            如果传入的 参数都比方法中的参数类型大,那么久会报错。 


重写:当父类所定义的方法无法满足子类需求时,可在子类中声明和父类完全相同的方法进行覆盖
    注意:1.
访问修饰符要求子类和父类相同,或者比父类权限更宽。
     2.
子类中的方法,不可抛出比父类更多、更宽泛的异常。
     

 public class Overload {
    public static void main(String[] args) {
    father s1 = new son(); 
    s1.a(); // 结果是 son  子类重写了父类的方法
    }
}
class father{
    public void a(){
    System.out.println("father");
    }
}
class son extends father{
    public void a(){
    System.out.println("son");
    }
}


不足之处,多多指导!

本文出自 “11134439” 博客,请务必保留此出处http://11144439.blog.51cto.com/11134439/1905227

以上是关于重载和重写的区别和用法的主要内容,如果未能解决你的问题,请参考以下文章

C# 中关于重载与重写的区别及用法

方法重载和重写的区别

Java面向对象--方法的重载和重写

重写和重载的区别

重写和重载的三点区别

Java中重载(Overload)和重写(Override)的定义