接口初了解

                                   接口

一、接口的概念
接口声明了一组能力,但它自己并没有这个能力,它只是一个约定。接口涉及交互双方对象,一方需要实现这个接口,另一方使用这个接口,但双方对象并不直接互相依赖,它们只是通过接口交互。
以USB接口为例,USB协议约定了USB设备需要实现的能力,每个USB设备都需要实现这些能力,计算机使用USB协议与USB设备交互,计算机和USB互不依赖,但可以通过USB接口相互交换。
二、定义接口
首先定义一个接口
public interface MyCompare{
int compareTo(Object other);
}
以此为例作解释:
(1)Java使用interface这个关键字来声明接口,修饰符一般都是public。
(2)interface后面就是接口的名字MyComparable。
(3)接口定义声明,声明了一个方法compareTo,但是没有定义方法。
三、实现接口
类可以实现接口,表示类的对象具有接口所表示的能力,以point类作说明。
public class Point implements MyComparable {
private int x;
private int y;
public Point(int x,int y) {
this.x=x;
this.y=y;
public double distance() {
return Math.sqrt(xx+yy);
}
@Override
public int compareTo(Object other) {
if(! (other instanceof Point)){
throw new IllegalArgumentException();

               }
               Point otherPoint=(Point)other;
               double delta=distance()-otherPoint.distance();
               if(delta<0){
               return -1;
               }else if(delta>0){
               return 1;
               }else{
                        return 0;
                   }
               }
               @Override
               public String toString() {
                           return "("+x+","+y+")";
                           }
                 }

代码解释如下:
(1)Java使用implements这个关键字表示实现接口,前面是类名,后面是接口名。
(2)实现接口必须要实现接口中声明的方法,Point实现了compareTo方法。

        一个类可以实现多个接口,表明类的对象具备多种能力,各个接口之间以逗号分隔,例如:
        public class Test implements Interface1,Interface2{
        //主体代码
        }

四、使用接口
与类不同,接口不能new,不能直接创建一个接口对象,对象只能通过类来创建。但可以声明接口类型的变量,引用实现了接口的类对象。例如
MyComparable p1=new Point(2,3);
MyComparable p2=new Point(1,2);
System.out.println(p1.compareTo(p2));
p1和p2是MyComparable类型的变量,但引用了Point类型的对象,之所以能赋值是因为Point实现了MyComparable接口。如果一个类型实现了多个接口,那么这种类型的对象就可以被赋值给任一接口类型的变量。p1和p2可以调用MyCompare接口的方法,实际执行时,执行的是具体实现类的代码。
五、接口的细节
接口的细节:1.接口中的变量
2.接口的继承
3.类的继承和接口
4.instanceof
(1)接口中的变量
public interface Interface1 {
public static final int a=0;
}
这里定义了一个变量int a,修饰符是public static final ,但这个修饰符是可选的,即使不写,也是 public static final 。这个变量可以通过“接口名.变量名” 的方式使用,如Interface1.a。
(2)接口的继承
接口也可以继承,一个接口可以继承其他接口,继承的基本概念与类一样,但与类不同的是,接口可以有多个父接口,如下所示:
public interface IBase1 {
void method1();
}
public interface IBase2 {
void method2();
}
public interface IChild extends IBase1,IBase2{
}
IChild和IBase1和IBase2两个父类,接口的继承同样使用extends关键字,多个父接口之间以逗号分隔。
(3)类的继承与接口
类的继承与接口可以共存,换句话说,类可以在继承基类的情况下,同时实现一个或多个接口,语法如下所示:
public class Child extends Base implements IChild {
//主体代码
}
关键字extends要放在implements之前。
(4)instanceof
与类一样,接口也可以使用instanceof关键字,用来判断一个对象是否实现了某接口,例如:
Point p=new Point(2,3);
if(p instanceof MyComparable){
System.out.println(“comparable”);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值