Java 面向對象 之 Object 類

<a href="http://www.verejava.com/?id=16992832835152">http://www.verejava.com/?id=16992832835152</a>java

/**
	知識點: Object 類

	注意:
		1. Object 是全部類的根類, 也就是說全部類默認都繼承Object 只是省略沒有寫
		2. 當 println()輸出一個對象的時候 自動調用了 Object的 toString() 方法
		3. Object toString() 方法返回的是 : 類名+@+16進制的哈希碼hashCode地址
			哈希碼 表明對象的內存地址,因此若是比較兩個對象的引用相等==必須 哈希碼相等
		4. Object equals(Object obj) 方法比較的也是引用內部是以==實現的
		5. String 對象的equals()方法怎麼是比較內容了?
		6. 若是要equals()比較兩個對象的內容相等咱們須要複寫equals 方法
		7. 當Object的子類複寫了 toString() 方法, println()輸出時調用子類複寫的 toString() 方法
		8. 若是複寫了equals()方法,爲了保證對象相等哈希碼hashcode必須相等的特性,
		   咱們也要複寫hashCode()方法使保持對象的一致性
		9. Object 能夠接收任意引用數據類型(類,數組,接口)

	回顧知識點:
		1. 若是一個類定義了帶參數的構造方法, 當用不帶參數的構造方法調用時,java
		   虛擬機不會自動生成默認的構造方法,必須得手動顯示定義不帶參數的默認構造方法。
*/
public class TestObject
{
	public static void main(String[] args)
	{
		//實例化一個 Student
		Object p=new Student("李明");
		Student p2=(Student)p;
		Student p3=new Student("張濤");
		Student p4=new Student("李明");
		System.out.println(p);
		System.out.println(p==p2);
		System.out.println(p3);
		System.out.println(p.equals(p3));
		System.out.println(p==p4);
		System.out.println(p.equals(p4));
		System.out.println(p);
		System.out.println(p4);

		Person p5=new Student("李明");
		System.out.println(p4.equals(p5));

		String[] p6=new String[1];
		p6[0]="李明";
		System.out.println(p4.equals(p6));
	}
}
interface Person
{
	/**
		什麼人能夠說話
	*/
	public void say();
}
class Student extends Object implements Person
{
	private String name;

	public Student()
	{
	
	}

	public Student(String name)
	{
		this.name=name;
	}

	public String getName()
	{
		return this.name;
	}

	public void say()
	{
		System.out.println("學生會說英語");
	}
	

	public boolean equals(Object obj)
	{
		//若是地址都相等, 兩個對象確定相等
		if(this==obj)
		{
			return true;
		}
		//判斷是不是 Student 對象實例
		if(obj instanceof Student)
		{
			//將obj向下轉型成 Student
			Student p=(Student)obj;
			//若是內容相等返回true
			if(this.name.equals(p.getName()))
			{
				return true;
			}
		}
		return false;
	}

	public int hashCode()
	{
		return this.name.hashCode();
	}
	
	public String toString()
	{
		return this.name;
	}
	
}

<a href="http://www.verejava.com/?id=16992832835152">http://www.verejava.com/?id=16992832835152</a>數組

相關文章
相關標籤/搜索