Maison >Java >javaDidacticiel >Comment remplacer une méthode en Java ?
remplacement de la méthode : 1. Méthode [toString()], renvoie un objet sous la forme d'une chaîne ; 2. Méthode [equals()], compare si les références de deux objets sont égales, code C'est [sq s2=new sq(5,4);println(s1.equals(s2)].
Méthode réécrite en java Méthode :
La réécriture de méthodes en Java repose sur l'une des trois caractéristiques majeures des classes Java : l'héritage. Sans héritage, on ne peut pas parler de réécriture de méthode. la classe parent du programme ne peut pas répondre aux besoins de la sous-classe, la sous-classe peut redéfinir le contenu et la fonction de la méthode pour répondre aux besoins de la sous-classe. Comment l'implémenter spécifiquement via le code ? .
(1) Définir une classe de polygone
class Polygon{ //属性 private int number_side; //构造器 public Polygon(int number_side) { super(); this.number_side = number_side; } //方法 public int getNumber_side() { return number_side; } public void setNumber_side(int number_side) { this.number_side = number_side; } public void show(){ System.out.println("Number_side is " + this.number_side); } }
En plus des méthodes get et set, cette classe existe également une méthode show qui peut afficher le nombre de côtés du polygone. 🎜>
(2) Définir une classe carrée héritée de la classe polygoneclass square extends Polygon{ //属性 private double length; //构造器 public square(double length, int number_side) { super(number_side); this.length = length; } //方法 public double getLength() { return length; } public void setLength(double length) { this.length = length; } //输出边数和边长 public void show(){ System.out.println("This is a square"); super.show(); System.out.println("Length is " + this.length); } }Vous pouvez voir qu'il y a toujours un show dans la méthode square de la sous-classe, mais la fonction et l'instruction de la méthode sont tout à fait. différent de la méthode show dans sa classe parent, car dans la sous-classe square, la fonction de la méthode show de la sous-classe square doit non seulement pouvoir afficher le nombre de côtés opposés, mais également la longueur des côtés opposés. donc la méthode show de la classe parent ne peut pas répondre aux besoins de la sous-classe pour le moment. Le développeur doit réécrire une méthode show pour répondre aux besoins de la sous-classe. Il y en a beaucoup dans le processus de développement actuel. d'autres situations dans lesquelles la réécriture de méthodes est appliquée. Ensuite, cet article répertorie plusieurs réécritures de méthodes plus couramment utilisées Sous le package java.lang de java, il existe une classe nommée Object. class est la classe parent de toutes les classes. Lorsque nous créons une classe, si nous ne la déclarons pas comme héritant de la classe que nous avons créée, elle héritera de Object. Cependant, le mot-clé extends Object est omis en Java. méthodes fréquemment utilisées dans la classe Object : 1. méthode toString() ; 2. méthode equals() Ces deux méthodes sont souvent répétées dans les classes créées par les développeurs Write. La méthode toString() consiste à renvoyer un objet sous la forme d'une chaîne. Par exemple :
Polygon p = new Polygon(3); System.out.println(p.toString());La méthode appelée ici est la dans la classe Object. Le résultat est :
toString()
On peut voir que lorsque la méthode toString()
dans la classe Object est appelée, un objet sous la forme. d'une chaîne est renvoyée, qui est l'adresse de l'objet. toString()
est généralement remplacée pour fournir un mode de sortie de chaîne spécifique pour l'objet, par exemple :
public class Test { public static void main(String[] args) { Polygon p = new Polygon(3); System.out.println(p.toString()); } } class Polygon{ //属性 private int number_side; //构造器 public Polygon(int number_side) { super(); this.number_side = number_side; } //..................................此处省略其他无关的方法 @Override public String toString() { return "Polygon [number_side=" + number_side + "]";remplace
dans la classe de polygone Méthode Polygone, dans la méthode principale, nous créons un objet Polygon p et l'instancions, en appelant la méthode
remplacée dans Polygon.toString()
À ce stade, le système affiche le nom de la classe Polygon et ses attributs sous forme de chaîne.
toString()
toString()
2. La méthode equals() toString()
Quelle est l'incarnation spécifique de la méthode equals() dans le Classe d'objet ? Quelle est sa fonction ? L'ancienne règle est d'aller directement au code.
public boolean equals(Object obj) { return (this == obj); }
Il s'agit de l'implémentation spécifique de la méthode
de la classe Object dans le code source, on sait donc que la fonction de la méthodedans Object est de comparer si les références de deux objets sont égaux. Quand on appelle la méthode dans la classe Object :
public class Test { public static void main(String[] args) { square s1 = new square(5.2,4); square s2 = new square(5.2,4); System.out.println(s1.equals(s2)); } }
La sortie du système est :
equals()
Ensuite on réécrit le
public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; square other = (square) obj; if (Double.doubleToLongBits(length) != Double .doubleToLongBits(other.length)) return false; return true; }
equals()
Lorsque la méthode equals()
de la classe carrée est à nouveau appeléeequals()
public class Test { public static void main(String[] args) { square s1 = new square(5.2,4); square s2 = new square(5.2,4); System.out.println(s1.equals(s2)); } }la sortie du système est : par rapport à avant fasle, la sortie true à ce moment est due au fait que la méthode
a été réécrite et que la méthode equals()
réécrite compare le contenu réel des deux objets, c'est-à-dire les attributs du deux objets (remarque : la méthode equals() ne permet pas de comparer deux objets (car cela n'a aucun sens), s'ils sont égaux, true sera affiché.
Ce qui précède représente les connaissances de base sur la réécriture de méthodes et quelques points communs. Le blogueur l'a mentionné précédemment dans le chapitre sur le polymorphisme : la réécriture de méthodes est aussi une manifestation du polymorphisme. Nous pouvons maintenant savoir que les mêmes méthodes toString()
et equals()
sont utilisées dans les classes personnalisées. Après la réécriture, les fonctions sont complètement différentes de celles-là. dans la classe Object, ce sont également des manifestations différentes de la même chose, ce qui est conforme à la nature du polymorphisme.
Tutoriel recommandé : "Tutoriel vidéo Java"
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!