重载和重写的区别和用法

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");
    }
}

不足之处,多多指导!

时间: 2024-08-06 20:07:36

重载和重写的区别和用法的相关文章

重载和重写的区别(详细)

ava中重载与重写的区别 首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义. 调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性. (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,

java基础疑难点总结之成员变量的继承,方法重载与重写的区别,多态与动态绑定

1.成员变量的继承 1.1要点 子类用extends关键字继承父类.子类中可以提供新的方法覆盖父类中的方法.子类中的方法不能直接访问父类中的私有域,子类可以用super关键字调用父类中的方法.在子类中可以增加域,增加方法或者覆盖超类的方法,然而绝对不能删除继承的任何域和方法. 在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象.所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性

重载和重写的区别

java中重载与重写的区别 首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义. 调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性. (3) 重载的时候,方法名要一样,但是参数类型和个数不一样

Java的重载和重写的区别

今天做题一脸蒙:原以为理解的挺深的,看来不仅要学会,换药灵活运用.以下是搜集整理的重载和重写的区别: 1.首先是书写:重载英文为overload  ,重写为 override . 2.然后是定义: (1)重载的定义是:方法名相同,参数类型不同或参数个数不同或参数顺序不同,就可以构成重载.这里注意没有规定方法返回值和修饰符,防止陷阱奥. (2)重写(又叫覆盖或复写):方法名相同,返回值类型相同,参数列表相同.  这里注意没有规定修饰符奥. 3.权限:   重载对权限没有要求: 重写的权限是:被子类

【面试题】方法的重载与重写的区别?

方法的重写(override orverwrite) vs 重载(overload) [面试题]方法的重载与重写的区别? 重载:"两同一不同":同一个类,同一个方法名,不同的参数列表. 注:方法的重载与方法的返回值无关! >构造器是可以重载的 重写:(前提:在继承的基础之上,子类在获取了父类的结构以后,可以对父类中同名的方法进行"重构") 方法的返回值,方法名,形参列表形同:权限修饰符不小于父类的同名方法:子类方法的异常类型不大于父类的: 两个方法要同为sta

【JAVA】重载和重写的区别

重写(Overriding) 重写规则 1. 参数列表:必须与被重写方法的参数列表完全匹配.  2. 返回类型:必须与超类中被重写的方法中声明的返回类型或子类型完全相同  3. 访问级别:一定不能比被重写方法强,可以比被重写方法的弱.  4. 非检查异常:重写方法可以抛出任何非检查的异常,无论被重写方法是否声明了该异常.  5. 检查异常:重写方法一定不能抛出新的检查异常,或比被重写方法声明的检查异常更广的检查异常  6. 不能重写标志为final,static的方法 其中: 1. 父类与子类之

java中方法的重载与重写的区别

JAVA中方法的重载与重写 1)  方法的的参数上看:重载后的方法与源方法在参数的类型以参数列表的顺序上会发生改变,而重写后的方法在参数的数据类型与参数列表的顺序不会发生改变 2)原方法是否对被覆盖:重载后的方法不会覆盖原方法,而重写后的方法会覆盖父类中的方法,调用时也只会调用重写后的方法. 3)调用方法的对象上:重载后的方法被调用时,调用对象不同时,调用的方法不同,产生的结果也不同:而重写后的方法被调用时,无论调用的对象是父类或者子类的对象,调用的方法相同,产生的结果也一样

java中重载和重写的区别

重载和重写的英文名字: 重载overload. 重写override. 其实把重载和重写放到一起比较本身没有太大的意义.因为: (1)重载主要发生在同一个类的多个同名方法之间 (2)重写发生在子类和父类的同名方法之间. 他们除了方法名相同之外,没有太大相似之处. 此外,子类和父类之间也会发生重载.如果子类定义了一个与父类相同名字的方法,但是参数列表不同的方法,那么就会形成子类方法和父类方法的重载.

python 重载和重写的"区别"

重载和重写,这是两个新概念,是两个令我们容易混淆的概念. 1.重载(overloading method) 是在一个类里面,方法名字相同,而参数不同.返回类型呢?可以相同也可以不同.重载是让类以统一的方式处理不同类型数据的一种手段. 函数重载主要是为了解决两个问题.1.可变参数类型.2.可变参数个数. 另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数. 好