类和对象

来源:互联网 发布:怎么看淘宝店铺地址 编辑:程序博客网 时间:2024/06/06 03:58

修饰方法或属性
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:测试