接口、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,实现实际上是一种继承关系。接口和实现类使父子类型的关系
注:接口的使用,是面向对象多态的最好体现
二、Object类
Object是java的继承root类,所有类都从这个类继承。
a. toString() 方法:
1 toString() 方法,返回对象的文本描述 经常被系统默认调用,默认返回:全限定名:@HashCode
2 建议覆盖toString(),返回合理的文本
例如:
b. equals() 对比两个对象是否相等 ( a == b 是表示a和b两个变量是否相等)
1 区别:引用相等 与 对象相等
2 引用相等: 使用 “==”
3 对象相等:.equals() 方法
4 equals在Object类中声明,默认的比较规则是:引用比较
5 建议覆盖,实现对象的比较(比较对象的状态,就是比较的对象的数据)。
c. hashCode() 方法要与equals方法一同覆盖
1 当两个对象equals比较为true时候,这两个对象应该具有相同的hashCode() 值
2 当两个对象equals比较为false时候,这两个对象应该具有不相同的hashCode() 值
3 默认的hashCode()值是当前对象地址转换的一个整数,这个整数不是内存地址
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()值是当前对象地址转换的一个整数,这个整数不是内存地址
相关文章推荐
- Object的方法equals,hashCode,toString,clone。另外Comparable接口的方法
- Object(equals,finalize,clone,hashCode,toString),与包的重名
- String有重写Object的hashcode和toString吗?重写equals不重写hashCode会有什么问题?
- 《Java核心技术》第10版读书笔记之Chap5(3)——Object类及其equals、hashCode与toString方法
- Object 开发中常用的重写方法总结toString,equals,hashCode,compareTo
- 复写Object超类的equals,hashCode,toString方法
- 关于覆盖Object中的hashCode, equals和toString
- 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)
- 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解
- Object常用方法介绍及注意事项equals(),hashCode(),getClass(),toString()
- Java记录 -57- Object的equals、hashcode和toString方法
- Java记录 -57- Object的equals、hashcode和toString方法
- java对象通用方法之覆盖equals时请遵守通用约定、覆盖equals时总要覆盖hashCode、始终要覆盖toString、考虑实现Comparable接口
- 为什么SpringAOP使用JDK动态代理时好像没有代理Object.[equals()、hashCode()、toString()]这三个方法
- JAVA Object对象(toString、equals、hashCode方法)、String类、StringBuffer、StringBuider、System、Runtime、Date、Mat
- Object 开发中常用的重写方法总结toString,equals,hashCode,compareTo
- Java学习之equals()、hashCode()、identityHashCode()、toString()和==
- toString、hashCode、equals的重写原因与重写示例
- Effective Java(覆盖equals时总要覆盖hashcode方法、始终要覆盖toString)
- 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重