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); } }
Polygon p = new Polygon(3); System.out.println(p.toString());
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 + "]";
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)); } }
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!