Remplacement Je veux l'écrire à nouveau. En fait, il s'agit de réécrire les méthodes de la classe parent elle-même dans la sous-classe. La sous-classe hérite de la méthode d'origine de la classe parent, mais parfois la sous-classe ne veut pas hériter d'une méthode de la classe parent inchangée, donc le nom de la méthode, la liste des paramètres, le type de retour (sauf la valeur de retour de la méthode dans la sous-classe Quand la valeur de retour de la méthode dans la classe parent est la même que celle de la sous-classe, la modification ou la réécriture du corps de la méthode est appelée réécriture. Cependant, il convient de noter que les autorisations de modification d'accès des fonctions de sous-classe ne peuvent être inférieures à celles de la classe parent.
Par exemple :public class Father { public static void main(String[] args) { // TODO Auto-generated method stub Son s = new Son(); s.sayHello(); } public void sayHello() { System.out.println("Hello"); } } class Son extends Father{ @Override public void sayHello() { // TODO Auto-generated method stub System.out.println("hello by "); } }
Surcharge (Surcharge)
Dans une classe, si la méthode du même nom a différentes listes de paramètres (différents types de paramètres, nombre différent de paramètres ou même ordre différent des paramètres) sont considérées comme des surcharges. Dans le même temps, la surcharge n'exige pas de types de retour, qui peuvent être identiques ou différents, mais la surcharge ne peut pas être jugée selon que les types de retour sont identiques.
Par exemple :public class Father { public static void main(String[] args) { // TODO Auto-generated method stub Father s = new Father(); s.sayHello(); s.sayHello("wintershii"); } public void sayHello() { System.out.println("Hello"); } public void sayHello(String name) { System.out.println("Hello" + " " + name); } }
Au cours de l'entretien, a demandé : Quelle est la différence entre une surcharge et une dérogation ?
Réponse : Les méthodes de surcharge et de réécriture sont les deux moyens d'obtenir le polymorphisme. La différence est que la première implémente le polymorphisme au moment de la compilation, tandis que la seconde implémente le polymorphisme au moment de l'exécution.
Une surcharge se produit dans une classe. Si une méthode portant le même nom a une liste de paramètres différente (différents types de paramètres, un nombre différent de paramètres, ou les deux), cela est considéré comme une surcharge ; Entre la sous-classe et la classe parent, la substitution nécessite que la méthode surchargée de la sous-classe ait la même liste de paramètres que la méthode surchargée de la classe parent, ait un type de retour compatible, soit plus facile d'accès que la méthode surchargée de la classe parent, et ne peut pas être comparée à la méthode surchargée de la classe parent. La méthode surchargée de la classe parent déclare plus d'exceptions (principe de substitution de Liskov).
la surcharge n'a pas d'exigences particulières pour le type de retour et ne peut pas être distinguée en fonction du type de retour.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!