您的位置:首页 > 移动开发 > Objective-C

接口、Object类(toString(), equals(), hashCode())

2013-10-17 21:22 330 查看
一、接口 interface

1 全部的方法都是抽象方法,全部的属性都是常量。接口用来表示纯抽象概念,没有任何具体的方法和属性。

2 不能实例化,可以定义变量

3 接口变量可以引用具体实现类的实例

4 接口只能被实现,一个具体类实现接口,必须使用全部的抽象方法

5 接口之间可以继承

6 一个具体类可以实现多个接口,实现多继承现象,表示:一个概念既是XXX也是XXX

7 接口中的属性,默认是常量 public static final,可以省略不写,全称:public static final int a=1 略写:int a=1

8 接中的方法一定是:public abstract ,可以省略不写 全称:public abstract int getType(); 略写 int getType();

9 实现一个接口,使用关键字implements,实现实际上是一种继承关系。接口和实现类使父子类型的关系

注:接口的使用,是面向对象多态的最好体现

public interface Roadster {}  //定义接口

public interface Roadster extends Vehicle {} //接口可以继承接口

public class Car implements Vehicle {} //实现接口的Car类

public class Car extends Test implements Roadster,Other,...{} //带继承和接口的Car类

 

 

二、Object类

      Object是java的继承root类,所有类都从这个类继承。

     a.  toString() 方法:

             1 toString() 方法,返回对象的文本描述 经常被系统默认调用,默认返回:全限定名:@HashCode

             2 建议覆盖toString(),返回合理的文本

     例如:

public class Point {
int x;
int y;

public Point(int x, int y) {
this.x = x;
this.y = y;
}

public String toString() {
return "("+x+","+")";
}
}


       b.  equals() 对比两个对象是否相等 ( a == b 是表示a和b两个变量是否相等)

1 区别:引用相等 与 对象相等

2 引用相等: 使用 “==”

3 对象相等:.equals() 方法

4 equals在Object类中声明,默认的比较规则是:引用比较

5 建议覆盖,实现对象的比较(比较对象的状态,就是比较的对象的数据)。

public boolean equals(Object obj)
{
if(obj == null)
return false;
if(this==obj)
//自反性         return true;
if(obj instanceof Point)
{
Point other = (Point)other;
return x==other.x && y==other.y;
//对等性    }
return false;
}

 

      c. hashCode() 方法要与equals方法一同覆盖

1 当两个对象equals比较为true时候,这两个对象应该具有相同的hashCode() 值

2 当两个对象equals比较为false时候,这两个对象应该具有不相同的hashCode() 值

3 默认的hashCode()值是当前对象地址转换的一个整数,这个整数不是内存地址

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java
相关文章推荐