Override
Override is a subclass's rewriting of the implementation process of the parent class's methods that allow access. Neither the return value nor the formal parameters can be changed. That is, the shell remains unchanged and the core is rewritten!
The advantage of overriding is that subclasses can define their own behavior as needed. In other words, subclasses can implement the methods of the parent class as needed.
Overriding methods cannot throw new checked exceptions or exceptions that are broader than the overridden method declaration. For example: A method of the parent class declares a checked exception IOException, but when overriding this method, it cannot throw an Exception exception, because Exception is the parent class of IOException and can only throw exceptions of subclasses of IOException.
Method overriding rules
The parameter list must be exactly the same as that of the overridden method;
The return type must be exactly the same as the return type of the overridden method;
Access permissions cannot be lower than the access permissions of overridden methods in the parent class. For example: If a method of the parent class is declared as public, then the method cannot be declared as protected when overriding it in the subclass.
Member methods of the parent class can only be overridden by its subclasses.
Methods declared as final cannot be overridden.
Methods declared as static cannot be overridden, but can be declared again.
If the subclass and the parent class are in the same package, then the subclass can override all methods of the parent class, except for methods declared as private and final.
The subclass and the parent class are not in the same package, then the subclass can only override the non-final methods of the parent class that are declared public and protected.
The overridden method can throw any non-mandatory exception, regardless of whether the overridden method throws an exception. However, an overridden method cannot throw new mandatory exceptions, or mandatory exceptions that are broader than those declared by the overridden method, and vice versa.
Constructor methods cannot be overridden.
If you cannot inherit a method, you cannot override this method.
Overload(Overload)
Overloading (overloading) is in a class, the method name is the same, but the parameters are different. The return types can be the same or different.
Each overloaded method (or constructor) must have a unique parameter type list.
Only constructors can be overloaded
Overloading rules
The overloaded method must change the parameter list (the number, type or order of parameters are different);
The overloaded method can change the return type;
The overloaded method can change the access modifier;
The overloaded method can declare new or wider Checked exceptions;
Methods can be overloaded in the same class or in a subclass.
The return value type cannot be used as the criterion for distinguishing overloaded functions
Summary
Overriding and overloading of methods (Overloading) is a different manifestation of polymorphism in Java. Overwriting is a manifestation of polymorphism between parent classes and subclasses. Overloading is a manifestation of polymorphism in a class.
The above is the entire content of this article. I hope that the content of this article can bring some help to everyone's study or work. I also hope to support the PHP Chinese website!
For more articles related to the difference between Java rewriting and overloading, please pay attention to the PHP Chinese website!