一、重载(overload)。
1、定义:重载就是一个类中有多个同名的函数,每个函数都有不同的参数类型和参数个数,
例如:- class OverLoadDemo
- {
- public void method()
- {
- }
- public void method(String p)
- {
- }
- public void method(String[] p)
- {
- }
- public void method(String p,int p1)
- {
- }
- public void method(int p1,String p)
- {
- }
- }
复制代码 2、重载要注意的事项
1、重载跟返回值无关,仅管反回值不同,但只要函数名和参数列表是相同的,就只能定义一种。
2、重载跟异常无关,仅管异常不同但,但只要函数名和参数列表是相同的,就只能定义一种。
二、重写(override)。
1、定义:重写发生在继承里,即重写发生在父类和子类之间。子类函数的方法名和父类的非私有,非终态的函数名重名时,这种情况就是子类重写父类的函数。
例如:- class OverrideDemo
- {
- public void method()
- {
- }
- public void method(byte )
- {
- }
- public void method(String[] p)
- {
- }
- public void method(String p,int p1)
- {
- }
- public void method(int p1,String p)
- {
- }
- }
- class Child extends OverrideDemo
- {
- //重写父类的 method方法.
- public void method(int p1,String p)
- {
- }
- }
复制代码 2、重写要注意的事项。
1、重写的前提是要有继承关系。没有继承就谈不上重写。
2、子类不能重写父类的私有成员,即使定义也只能说明重新定义在子类中的一个新的函数而已,因为子类无法继承父类的私有方法。
3、子类不能得写父类的终态函数,即使定义也只能说明重新定义在子类中的一个新的函数而已,因为子类无法继承父类的终态方法。
4、用final修饰的方法不可以被子类继承。
5、子类重写父类的方法,其修包饰权限只能大于等于父类的修饰权限,而不能小于父类的修饰权限
6、子类重写父类的方法,其抛出的异常只以是父类的异常或异常子类。
7、子类重写父类的方法,其输入参数可以被放大,就是说参数可以是其类型本身的父类。
8、子类重写父类的方法,其输出参数可以被缩小,就是说参数可以是其类型本身的子类。
不足之处望指正,互相交流
|