1. 程式人生 > >Java之重寫Object類中的equals方法

Java之重寫Object類中的equals方法

package com.xiao.equals;

/**
 * @author 笑笑
 * @Date   2018年4月12日下午10:16:09
 *	
 */
public class Phone {
	
	private String name;
	private double price;
	
	//重寫equals方法,比較name屬性是否相等,相等返回true,不等返回false
	@Override
	public boolean equals(Object obj) {
		//入參型別是Object型別,父類不能呼叫子類特有的屬性或方法,需要向下轉型
		//並且由入參是Object型別,也就是說任何型別的引數都能進來
		//這樣就得先判斷入參型別是否是Phone型別(還可以加非空判斷、是否是自己比較自己判斷等)
		
		if(this == obj){
			return true;
		}
		
		if(obj instanceof Phone){
			Phone p = (Phone)obj;
			return this.name == p.name;
		}
		return false;
	}
	
	//空參構造
	public Phone(){
	}
	//有參構造
	public Phone(String name, double price) {
		this.name = name;
		this.price = price;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	
	

}
package com.xiao.equals;

/**
 * @author 笑笑
 * @Date   2018年4月12日下午10:18:34
 *	
 */
public class Test {
	
	public static void main(String[] args) {
		
		Phone p1 = new Phone("大哥大",999.0);
		Phone p2 = new Phone("大哥大",999.0);
		
		//呼叫重寫後的equals方法,p1和p2的name屬性值相等,返回true
		boolean b = p1.equals(p2);
		//列印為true
		System.out.println(b);
	}	

}