方法的重载
- 方法的签名:方法名+参数列表
- 发生在同一类中,方法名相同,参数列表不同
- 编译器在编译时会根据方法的签名自动绑定调用方法
class Aoo{
void show(){}
void show(String name){}
void show(int age){}
void show(String name,int age){}
void show(int age,String name){}
//int show(){ return 1; } //编译错误,重载与返回值类型无关
//void show(String address){} //编译错误,重载与参数名称无关
在类中被final修饰的方法是否可以被重载?
结果是:被final修饰的方法是否可以被重载。
注意:
发生在同一类中,方法名相同,参数列表不同
重载的方法除了名字相同与原方法没关系是属于新的一个方法
当子类继承了父类,子类重载了父类的方法,那子类发生的重载
方法 的重写
方法的重写原则(override/overriding):
发生在父子类中,方法名相同,参数列表相同
重写需遵循"两同两小一大"原则:
两同:方法名相同,参数列表相同.
两小:派生类方法的返回值类型小于或等于超类方法的
- void和基本类型时,必须相等 , 引用类型时,小于或等于(类的继承关系)
- 抛出的异常时--子类异常小于或等于超类方法的
一大: - 派生类方法的访问权限大于或等于超类方法的(访问权限子类不能比父类严)
重写与重载的区别:
重写(override):
发生在父子类中,方法名相同,参数列表相同,当派生类觉得超类的行为不好时,可以通过重写来修改超类中的方法
重载(overload): 发生在同一类中,方法名相同,参数列表不同,是完全不同的方法,只是正好方法名相同而已