重载与重写的区别
java中的重载就是在类中创建多个同名方法,但是方法签名参数列表)不同,返回值可以相同也可以不相同(不能使用返回值区分方法的重载),方法体也不同。
1)发生在同一个类中,方法名称相同,参数列表不同
2)编译器在编译时会根据方法的签名自动绑定方法
重写:
1)发生在父子类中,方法名称相同,参数列表相同,方法体不同
2)重写方法被调用时,看对象的类型
简单说,就是同样的一个方法能够根据输入数据的不同,做出不同的处理,即方法的
重载——有不同的参数列表(静态多态性)
而当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法,
即在子类中重写该方法——相同参数,不同实现(动态多态性)
重写方法的规则:
1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
2、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。
而重载的规则:
1、必须具有不同的参数列表;
2、可以有不责骂的返回类型,只要参数列表不同就可以了;
3、可以有不同的访问修饰符;
4、可以抛出不同的异常;
重写与重载的区别在于:
1)重写Override):
1.1)发生在父子类中,方法名称相同,参数列表相同,方法体不同
1.2)遵循”运行期绑定”,看对象的类型来调用方法
2)重载Overload):
2.1)发生在一个类中,方法名称相同,参数列表不同,方法体不同
2.2)遵循”编译期绑定”,看引用的类型来绑定方法