java中方法的重写与重载的区别
程序员文章站
2022-03-20 11:05:19
...
重载: 方法名相同,但是参数必须有区别(参数不同可以使类型不同,顺序不同,个数不同)。重写(又叫覆盖): 子类继承父类的方法,并重新实现该方法。
方法重写使用注意事项:
1.方法重写时,必须存在继承关系
2.方法重写时,方法名和形式参数必须一致。
3.方法重写时 ,子类的权限修饰符需要大于或等于父类的权限修饰符。
4.方法重写时 ,子类的返回值类型必须小于或等于父类的返回值类型
5.方法重写时 , 子类的异常类型要小于等于父类的异常类型。
在这里面主要拿第三点来测试:
public class a{ public static class People { public void fun(){}; } static class Student extends People { protected void fun(){ System.out.println("dfdfd"); } } public static void main(String[] args){ Student p = new Student(); p.fun(); } }
编译就报错了,如图:
原因是父类的方法的权限是public ,而子类改为protected,降低了权限,所以只能大于或等于如:
public class a{ public static class People { protected void fun(){}; } static class Student extends People { public void fun(){ System.out.println("dfdfd"); } } public static void main(String[] args){ Student p = new Student(); p.fun(); } }
运行成功
推荐阅读
-
php中session_unset与session_destroy的用法与区别
-
WPF 中Binding的2个属性Source与ElementName的区别
-
sqlserver存储过程中SELECT 与 SET 对变量赋值的区别
-
java中的sleep()和wait()的区别
-
方法参数的值传递机制(全局与局部区别)
-
深入分析php中接口与抽象类的区别_PHP教程
-
在JavaScript中重写jQuery对象的方法实例教程_jquery
-
php中的静态方法与实例方法有什么区别?解决方法
-
PHP中new static()与new self()的区别异同分析_PHP
-
在Python中该如何实现Java的重写与重载