在同一个类中,允许存在一个及以上的同名方法,只要他们的参数列表不同(参数的个数或者参数的类型不同)即可。
被重载的方法必须改变参数列表(参数个数或类型或顺序不一样);
被重载的方法可以改变返回类型;
被重载的方法可以改变访问修饰符;
被重载的方法可以声明新的或更广的检查异常;
方法能够在同一个类中或者在一个子类中被重载。
无法以返回值类型作为重载函数的区分标准。
编译时的多态
重载发生在同一个类中
函数名相同,参数列表不同(参数的类型,顺序,个数 和参数名没有关系) 和方法的返回值类型无关 (因为编译器 并不知道 调用哪一个函数)
可以抛出不同的异常,可以有不同修饰符
(int a, int b)和(int b, int a)不算顺序不同,属于同一种参数顺序。
注意:方法重载与返回值类型、访问权限修饰符、和抛出的异常无关,也就是说,返回值类型,权限修饰符是可以改变的。
注意:重载是在本类中,与继承关系无关。也就是说可以在子类再重载。
同名同参
方法的重写发生在继承关系中,子类对父类的方法进行改造扩充,这就是方法的重写。
1.运行时的多态
2.重载发生在子类与父类中
3.遵循两同两小一大
两同:
函数名相同
参数列表相同
两小:
子类被重写方法的返回值类型小于父类被重写方法的
子类被重写方法抛出异常的类型小于父类被重写方法抛出异常的类型
一大:
子类被重写方法的访问权限大于等于父类被重写方法的访问权限
4.构造方法不能被重写,声明为 final 的方法不能被重写,声明为 static 的方法不能被重写(隐藏),但是能够被再次声明,父类的私有方法,子类可以继承 但是子类不能访问,子类不能重写父类的私有方法。
子类不能重写父类的private方法,添加@override注解会报错,因为这个方法是父类私有的子类不能访问,虽然子类继承了这个方法,但是子类只有拥有权没有使用权。如果去掉@override注解就不会再报错,所以说进行方法重写时要记得添加@override注解,让编译器帮助你做检查。
区分类中重载方法的依据是(不同的形参列表)。
重载的方法就是形参列表的不同,和返回值无关



