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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值