java——接口的基础语法

接口(interface)的基础语法

在抽象类中,可以包含一个或多个抽象方法;但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加“抽象”。

接口使用 interface 关键字来声明,可以看做是一种特殊的抽象类,可以指定一个类必须做什么,而不是规定它如何去做。

1、接口也是一种”引用数据类型“,编译之后还是一个.class的字节码文件。。

2、接口是完全抽象的(抽象类是半抽象的)。。

3、接口使用:interface定义的。。

4、接口支持多继承,一个接口可以继承多个接口。。

5、接口中只包含两部分内容:一是常量,,二是抽象方法(方法里面不能有方法体)。。

6、接口中的所有元素都是公开的(public修饰),所以在抽象方法定义时:public abstract修饰符可以省略。。

7、常量中的 public static final 也是可以省略的。。案例如下所示

public class test{
    public static void main(String args[])  {
        System.out.println(A.num);///3.1415926
    }
}
interface A{
    //常量:不能修改的
    public static final double pi = 3.1415926;
    double num = 3.1415926;// public static final 也是可以省略的。。
    //方法:
    public abstract int sub(int a,int b);//等同于下面的
    int sum(int a,int b);
}

8、接口的实现:用implements关键字(也可以将实现看作“继承”)

  • 当一个非抽象的类实现接口时,必须将接口中的所有抽象方法全部实现(重写)。。

  • 如果继承和实现同时出现时,先extends,后implements。。

public class test{
    public static void main(String args[])  {
        B b = new word();
        A a = new word();
        System.out.println(b.sum(2,15));//面向接口编程
        System.out.println(a.sub(2,15));
    }
}
class Number{
}
interface A{
    double num = 3.1415926;
    int sub(int a,int b);
}
interface B{
    int sum(int a,int b);
}
class word extends Number implements A,B{
    public int sub(int a,int b){
        return a-b;
    }
    public int sum(int a,int b){
        return a+b;
    }
}

9、接口在开发中的作用:

面向接口编程,可降低程序的耦合度,提高扩展能力,符合ocp开发原则。。

接口的使用离不开多态机制,(接口+多态才可以降低耦合)

public class test{
    public static void main(String args[])  {
        Total t = new Son1();
        Father f = new Father(t);
        f.print();//China Son1
                    //China Son2
    }
}
interface Total{
    void T1();
    void T2();
}
class Son1 implements Total{
    public void T1(){
        System.out.println("China Son1");
    };
    public void T2(){
        System.out.println("China Son2");
    };
}
class Son2 implements Total{
    public void T1(){
        System.out.println("China Son3");
    };
    public void T2(){
        System.out.println("China Son4");
    };
}
class Father{
    private Total total;
    private Father(){
    }
    public Father(Total total){
        this.total=total;
    }
    public void setTotal(Total total) {
        this.total = total;
    }
    public Total getTotal() {
        return total;
    }
    public void print(){
        total.T1();
        total.T2();
    }
}


版权声明:本文为Best_Basic原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。