重写override
重写是子类对父类的允许访问的方法实现过程进行重新编写,返回值、形参不能改变;
特点:
1、参数列表、返回值类型不能变;
2、子类的访问权限大于父类中被重写方法的访问权限;例如:父类一个方法声明为public,子类中重写该方法声明不能为protected;
3、父类的成员方法只能被子类重写;
4、声明为final的方法,不能被重写;
5、声明为static的方法不能被重写,但是能够被再次声明;
6、子类和父类在同一个包中,子类可以重复父类的所有方法,除了声明为private和final的方法;
7、子类和父类不在同一个包中,子类只能重写父类声明为public和protected的非final方法;
8、重写方法可以抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或着比重写方法声明的更广泛的强制性异常,反之则可以;
9、构造方法不能被重写;
10、如果不能继承一个方法,就不能重写这个方法;
重载overload
重载overload是在一个类里面,方法名相同,而参数不同。返回类型可以相同也可以不同;
每个重载的方法(构造函数是最常用的重载)都必须有独一无二的参数类型列表;
重载规则:
1、被重载的方法参数列表必须修改(参数个数、类型、顺序不一样);
2、被重载的方法返回类型可修改;
3、被重载的方法访问修饰符可修改;
4、被重载的方法可以声明新的或更广泛的检查异常;
5、方法能够在同一个类中或着在一个子类中被重载;
6、无法以返回类型作为重载函数的区分标准;
总结
方法的重写overriding和重载overloading是java多态性的不同表现,重写是父类与子类之间多态的一种表现,重载可以理解成多态的具体表现形式;
1、方法重载是一个类中定义多个方法名相同,而参数不同,则称为方法的重载;
2、方法重写是在子类与父类都存在名字相同的方法,参数和返回类型一样,则称为重写;
3、方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现;