1. 程式人生 > >Java常用API(四)——所有類的超類Object中常用方法的重寫

Java常用API(四)——所有類的超類Object中常用方法的重寫

    先定義一個Point類用於測試(含全引數構造方法、getters和setters)。

public class Point {
	private int x;
	private int y;
	/**getters and setters:
	 * getter返回private成員值*/
	public int getX() {
		return x;
	}
	public Point(int x, int y) {
		super();
		this.x = x;
		this.y = y;
	}
	public void setX(int x) {
		this.x = x;
	}
	public int getY() {
		return y;
	}
	public void setY(int y) {
		this.y = y;
	}

    重寫toString方法:該方法是一個非常常用的方法,很多API操作都會間接呼叫該方法。方法的目的是將當前物件轉換為字串 ,具體返回的字串格式沒有固定要求,遵循的原則是返回的內容中包含當前物件的屬性資訊,可以通過該字串的內容直觀反映出當前物件的內容。

public String toString() {		
		return "("+x+","+y+")";
	}

    Object定義的equals方法的設計意圖是比較兩個物件的內容是否相同。如果不重寫該方法,那麼Object內部是用"=="比較的,這樣就丟去了equals比較的意義了。所以我們需要呼叫一個類的equals時,該方法就應當重寫。

    注:java提供的類大部分都已經重寫過了,只有我們自己定義的類需要重寫。

public boolean equals(Object o) {
		if (o==null) {
			return false;
		}
		if (this==o) {
			return true;
		}
		if (o instanceof Point) {
			Point p=(Point)o;
			return x==p.x&&y==p.y;
		}
		return false;
	}
}
package object;
import java.util.Arrays;
/**
 * 測試Object類常用方法以及重寫
 */
public class Demo {
	public static void main(String[] args) {
		Point point=new Point(1, 2);
		/**
		 * Object的toString方法的設計意圖是將當前類的
		 * 例項轉換成一個字元
		 * Object已經實現了toString方法,預設返回當前對
		 * 象的控制代碼(類名@地址),但一般沒用,所以重寫(java
		 * 的類已經寫好了)
		 */
		System.out.println(point.toString());
		/**
		 * 該方法會將給定物件toString方法返回值輸出控制檯
		 */
		System.out.println(point);
		Point[]a={new Point(1, 1),new Point(1, 2)};
		System.out.println(Arrays.toString(a));
		Point p2=new Point(1, 2);
		System.out.println(point==p2);
		System.out.println(point.equals(p2));
	}
}