Java接口总结

接口的定义:

  使用interface来定义一个接口。接口定义与类的定义类似,也是分为接口的声明和接口体,其中接口体由变量定义和方法定义两部分组成,定义接口的基本语法如下:

[修饰符] interface 接口名 [extends 父接口名列表]{
    [public] [static] [final] 变量;
    [public] [abstract] 方法;
}

修饰符:可选参数,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。

接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。

extends父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。

方法:接口中的方法只有定义而没有被实现。

注意:接口名一般都有一个不成文的规定,即第一个字母为I。

例:

public interface IJiSuan {
    public void QiuMianJi();
    public void QiuZhouChang();
}

 

public interface IXingZhuang {
    public void Hua();
}

 

public abstract class SiBianXing implements IJiSuan, IXingZhuang {
    public void Hua(){
        System.out.println("正在画一个四边形");
    }
}

 

public class JuXing extends SiBianXing {
    private int a;
    private int b;
    public JuXing(int a,int b){
        this.a  = a;
        this.b = b;
    }
    @Override
    public void QiuMianJi() {
        double s = a*b;
        System.out.println(s);
    }

    @Override
    public void QiuZhouChang() {
        double c = a+b+a+b;
        System.out.println(c);;
        
    }

    public void Hua(){
        System.out.println("正在画一个矩型");
    }
}

可以对比看出

  接口用关键字interface声明。

  接口的地位等同于class,接口中的所有方法都是抽象方法。

  接口中在定义方法的时候,可以使用abstract关键字,也可以省略abstract关键字,(大多数时候都是省略的),方法仍是抽象的,不能有实现的花括号。

  接口和抽象类的功能类似,接口也不能实例化,可以将接口看作是一种特殊的抽象类(全是抽象方法)。

  接口的多态用法和抽象类也类似,接口类型的引用可以指向实现了这个接口的类的对象。

 

提到接口,就会联想到抽象,此时大家都会感觉接口和抽象很相似,那么他们有什么区别?

  1.接口本身就是抽象的,所以他的方法必须全部都是抽象的方法,但是抽象类中的方法可以是抽象的,也可以是具体的,详见前一篇内容对抽象类的解释。

  2.一个类可以实现接口,(类似于父子类之中用extends继承)采用关键字implement。大家都知道Java是单继承的,但是一个类可以实现多个接口,如上文中写的SiBianXing就实现了IJiSuan, IXingZhuang两个接口。

  3.如果一个类实现了一个接口或者多个接口,如果这个类是抽象类,那么这个类就不用实现接口的全部内容,如上例中SiBianXing定义的就是一个abstract抽象类,所以不用实现IJiSuan, IXingZhuang两个接口中所有的内容。

  4.同理于3,如果一个类实现了一个接口或者多个接口,如果这个类不是抽象类,是一个具体类的话,那么这个类就必须实现接口的全部内容,如上例中的JuXing,虽然JuXing是继承的SiBianXing,但是SiBianXing是一个抽象类,并没有实现所有接口的内容,而且JuXing没有定义abstract,是一个具体类,那么JuXing就必须把IJiSuan, IXingZhuang两个接口中所有的内容全部实现,也就是如上例中所写。

posted @ 2016-12-30 16:05  Claricre  阅读(1538)  评论(0编辑  收藏  举报