Java之重寫Object類中的equals方法
阿新 • • 發佈:2019-01-24
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); } }