重载的目的:节省类中的命名资源和提高代码的可读性。
重载是在一个类中, 1、方法名相同 2、方法的参数不同(参数个数或者参数类型) 3、方法的返回值类型不影响重载 ( 当两个方法的名字相同,参数也相同,但是返回值不同的时候,不构成重载 )
class Test { public static void main(String[] args) { int a = 10; int b = 20; int ret = add(a, b); System.out.println("ret = " + ret); } public static int add(int x, int y) { return x + y; } public static double add(int x, int y) { return x + y; } }子类实现父类的同名方法, 并且参数的类型和个数完全相同。
在子类继承父类时,子类的方法和父类的方法相同(访问修饰限制符,返回值类型,方法名,参数列表),方法体不同,这种子类的方法将父类的方法覆盖叫做重写。
在父子类的继承中有相同的方法,唯一不同就是方法体, 一般是父类的该方法满足不了子类的需求所以才发生重写。 class Animal { public void eat(String food) { ... } } class Bird extends Animal { @Override public void eat(String food) { ... } }重写注意事项:
1. 重写和重载完全不一样,不要混淆 2. 普通方法可以重写,static 修饰的静态方法不能重写 3. 重写中子类的方法的访问权限不能低于父类的方法访问权限重载与重写都是实现多态的方式, 重载:实现的是编译时的多态性 重写:实现的是运行时的多态性
N区别重载重写1概念方法名称相同,参数的类型及个数不同方法名称、返回值类型、参数的类型及个数完全相同2范围一个类继承关系3限制没有权限要求被重写的方法不能拥有比父类更严格的坊控制权限