一、接口 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()值是当前对象地址转换的一个整数,这个整数不是内存地址