/* 关于Object,以其中的eauqls方法为例: 1.继承Object中的equals方法时,比较的是两个引用是否指向同一个对象 2.子类可以通过重写equals方法的形式,改变比较的内容 */ //重写equals方法 public boolean equals(Object obj){ if(obj == null) //必须加判空操作,否则会出现空指针异常 return false; Animal temp = (Animal)obj; //强制类型转换 //重新制定equals的判定规则 if(this.getName().equals(temp.getName()) && (this.getMonth() == temp.getMonth())){ return true; }else{ return false; } } //重载重写后的equals方法 public boolean equals(Animal obj){ if(obj == null) //必须加判空操作,否则会出现空指针异常 return false; if(this.getName().equals(obj.getName()) && (this.getMonth() == obj.getMonth())){ return true; }else{ return false; } }
Object类是所有类的父类,它本身就有一些方法可供所有Java类调用,例如equals方法。
而且这些方法可以在子类中进行重写和重载,从而执行更具体的功能。
例:
Animal.java:
package com.wys.java.Model; public class Animal { private String name; //名字 private int month; //年龄 private String species; //品种 //无参构造方法 public Animal() { } //含参构造方法,对名字、年龄赋值 public Animal(String name, int month){ this.name = name; this.month = month; System.out.println("我是父类Animal类的带参构造方法"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public String getSpecies() { return species; } public void setSpecies(String species) { this.species = species; } /* 关于Object,以其中的eauqls方法为例: 1.继承Object中的equals方法时,比较的是两个引用是否指向同一个对象 2.子类可以通过重写equals方法的形式,改变比较的内容 */ //重写equals方法 public boolean equals(Object obj){ if(obj == null) return false; Animal temp = (Animal)obj; //强制类型转换 //重新制定equals的判定规则 if(this.getName().equals(temp.getName()) && (this.getMonth() == temp.getMonth())){ return true; }else{ return false; } } //重载重写后的equals方法 public boolean equals(Animal obj){ if(obj == null) return false; if(this.getName().equals(obj.getName()) && (this.getMonth() == obj.getMonth())){ return true; }else{ return false; } } }
Test.java:
package com.wys.java.Test; import com.wys.java.Model.Animal; public class Test { public static void main(String[] args) { Animal one = new Animal("花花",2); Animal two = new Animal("花花",2); //关于equals() boolean flag = one.equals(two); System.out.println("one 和 two 的引用比较:" + flag); System.out.println("one 和 two 的引用比较:" + (one == two)); System.out.println("======================================="); String str1 = new String("nnn"); String str2 = new String("nnn"); boolean strFlag = str1.equals(str2); System.out.println("str1 和 str2 的引用比较:" + strFlag); System.out.println("str1 和 str2 的引用比较:" + (str1 == str2)); } }
结果: