天天看點

Java Object類中toString方法的重寫

Object類中的tostring方法的:

當我們輸出一個對象時,實際是輸出的是這個類中的tostring方法,是一個位址值,而不是類中的屬性。
           

一:子類沒有重寫Object類中的toStrinng方法時的輸出

public class ToStringUse {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		A1 a1=new A1(12,"chentao");
		System.out.println(a1.toString());//此時子類A1沒有對根父類Object類中的toString沒有進行重寫
	}
	class A1{
	int age;
	String name;
	A1(int age,String name){
	this.age=age;
	this.name=name;
	}
}
	
}
           

輸出結果

polymorphism.A1@28a418fc //輸出的是對象的位址值,而非屬性
           

二:在子類中重寫toString方法,使得輸出類中的屬性

public class ToStringUse {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		A1 a1=new A1(12,"chentao");
		System.out.println(a1.toString());//此時的A1類中已經重寫了Objiect類中的toString方法
	}
class A1{
	int age;
	String name;
	A1(int age,String name){
	this.age=age;
	this.name=name;
	}

@Override//方法的重寫
	public String toString() {
		return "A1[name="+name+","+"age="+age+"]";
	}
	}}
           

輸出結果:

12 chentao  //輸出的是類中的屬性
           

關鍵點注意:

  • 在Java文法機制内,String類已經對Object類中的toString方法進行過重寫,使得輸出類中的屬性。
  • Date類,也重寫了toString方法,使得輸出值為類中的屬性
Java Object類中toString方法的重寫