Lorsque j'ai regardé la vidéo du professeur Gao récemment, j'ai trouvé un point de connaissance que je n'ai pas bien compris. Le code est le suivant :
.public class Test065 {
public static void main(String[] args){
Date d = new Date();//得到当前时间的毫秒数
System.out.println(d);
Dog a = new Dog();
System.out.println(a);
}
}
class Dog{
int age;
}
Les résultats de sortie sont les suivants :
Thu Jun 15 19:43:29 CST 2017
com.test065.Dog@33909752
Il imprime également un objet. Pourquoi l'objet de classe Date affiche-t-il l'heure actuelle, tandis que l'objet auto-construit affiche le code de hachage ?
Xiaomengxin demande de l'aide à des amis, je suis très impressionné !
La méthode Println appellera la méthode toString de l'objet de sortie. Si l'objet ne définit pas la méthode toString, il suivra la chaîne d'héritage pour trouver la classe parent.
Date a une méthode toString définie, donc la sortie est des informations d'attribut formatées.
La classe Dog personnalisée n'a pas de méthode toString, donc la méthode toString de la classe parent est utilisée, qui est celle d'Object
Lors de l'impression d'un objet, la valeur de retour de sa méthode toString sera imprimée. La date remplace la méthode toString. Si Dog ne remplace pas toString, il appellera la méthode toString de la classe parent Object
La classe Date remplace toString() dans la classe parent Object, mais pas votre propre classe. . . Jetez un œil au code source de la classe Date
La méthode toString a été réécrite, vous pouvez la vérifier vous-même dans le code source.