1.Java的方法重载(Overload):

就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
也就是说在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。
调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

2.重写(Override):

从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。
子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。

总结:

1.override(重写)

1、方法名、参数、返回值相同。

2、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)

3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。

4、存在于父类和子类之间。

5、方法被定义为final不能被重写。

2.overload(重载)

1、方法名相同,参数类型、个数、顺序至少有一个不相同。

2、重载的时候,返回值类型可以相同也可以不相同。无法以返回类型作为重载函数的区分标准

3、存在于父类和子类、同类中。

4.重载Overload是一个类中多态性的一种表现

面试时,问:重载(Overload)和重写(Override)的区别?

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

posted on 2024-02-19 20:12  别动我的代码  阅读(7)  评论(0编辑  收藏  举报