JAVA-重写和重载的区别

一、重写
1、发生于父类和子类之间;
2、方法名,参数列表, 返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须向同;
3、访问修饰符的限制一定要大于被重写的方法的访问修饰符(public > protected > default > private);
4、重写的方法一定不能抛出新的检查异常或者比重写方法声明更加宽泛的检查异常。

二、重载
1、重载是一个类中多态性的一种表现;
2、重载要求同名方法的参数列表不同(参数类型,参数个数,参数的顺序);
3、重载的时候,返回值类型可以相同也可以不同,不能以返回类型作为重载函数的区分标准。

面试-问:重写和重载的区别?

答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类当中,同名的方法如果有不同的参数列表(参数类型不同,参数的个数不同,参数的顺序不同)则视为重载;而重写发生在父类和子类之间,重写要求子类被重写方法和父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写的方法更好访问,不能比父类被重写的方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

你可能感兴趣的:(JAVA-重写和重载的区别)