修饰方法或属性
public:任何类中都可用
protected:当前包可访问,出了包有特例(继承)
缺省:当前包可访问
private:当前类中的对象this可以调用的
Object的几个特殊方法
equals方法
toString方法
hashCode方法
String的equals方法是对Object中的equals方法的重写.
String str="abc";
String str1=new String("abc");
为什么要重写equals方法
程序中通常比较两个对象的时候比较的是内存地址(调用Object类的equals方法来比较),但是实际应用中,没有完全相同的两个对象(即使属性完全一样)
如何equals
例子:Animal中有三个属性name,age,address
public boolean equals(Object obj) {
if(this==obj){
return true;
}
if(obj instanceof Animal){
Animal a=(Animal) obj;
if(this.name.equals(a.getName()) && this.age==a.age && this.address==a.getAddress()){
return true;
}
}
return false;
}
需要注意的点是:重写equals方法以后重写hashCode方法,(直接返回整数)
public int hashCode() {
return 1;
}
练习:写一个Book类,包含name(书名),num(页码),创建这个类的两个对象,使用equals方法进行比较,让他们结果返回为true
步骤1:把Book类写出来
步骤2:重写equals方法
步骤3:重写hashCode方法
步骤4:测试