java面向对象之接口

接口概念

    Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

 
接口的特点

    就像一个类一样,一个接口也能够拥有方法和属性,但是在接口中声明的方法默认是抽象的。(即只有方法标识符,而没有方法体)。

 

    接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。
    一个接口就是描述一种能力,比如“运动员”也可以作为一个接口,并且任何实现“运动员”接口的类都必须有能力实现奔跑这个动作(或者implement move()方法),所以接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。
    如果一个类实现了一个接口中要求的所有的方法,然而没有提供方法体而仅仅只有方法标识,那么这个类一定是一个抽象类。(必须记住:抽象方法只能存在于抽象类或者接口中,但抽象类中却能存在非抽象方法,即有方法体的方法。接口是百分之百的抽象类)
    一个JAVA库中接口的例子是:Comparator 接口,这个接口代表了“能够进行比较”这种能力,任何类只要实现了这个Comparator接口的话,这个类也具备了“比较”这种能力,那么就可以用来进行排序操作了。

为什么要用接口

        接口被用来描述一种抽象。
    因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限。
    接口也被用来实现解耦。
    接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。


接口的语法实现

    为了声明一个接口,我们使用interface这个关键字,在接口中的所有方法都必须只声明方法标识,而不要去声明具体的方法体,因为具体的方法体的实现是由继承该接口的类来去实现的,因此,接口并不用管具体的实现。接口中的属性默认为Public Static Final.一个类实现这个接口必须实现这个接口中定义的所有的抽象方法。

接口的使用介绍:

java接口是抽象方法的集合,使用interface来进行编程。java接口编程就是通过定义一系列抽象方法,然后可以自定义实现类,来实现接口抽象方法,通过接口可以隐藏内部实现过程

  1. 如何声明一个java接口?声明一个java接口需要使用关键字interface来进行修饰,使用开发工具创建能够自动创建添加关键字

  2. 接口能够继承多少个接口?接口可以继承多个接口,但是java类只能继承一个父类,属于单继承模式

  3. 接口里面可以定义变量,但是一定是可以公开访问的静态常量

  4. 接口里面可以定义方法,普通方法被编译器被编译之后都是抽象方法,默认添加

    abstract关键字

  5. 接口里面可以定义静态方法,静态方法可以有方法体,静态方法属于类级别方法,可以直接通过类来调用

  6. 实现接口方法需要使用implements关键字

    代码如下:

    public interface Smoking {
    //    抽象方法 public abstract 返回值类型 方法名(参数列表)
    //    成员变量的特点 public static final 变量名=变量值;
    //    静态常量(一旦赋值,不能改变)
    //    interface a{}
    //    inteface b{}
        public static final int a=1;
        public abstract void smoke();
        
    
    }
    public class Student implements Smoking {
        public void smoke() {
        System.out.println("学生抽烟");    
        }
    
    }
    public class demo01 {
    
        public static void main(String[] args) {
            Student s=new Student();
            s.smoke();
    System.out.println(s.a);
    System.out.println(Smoking.a);
        }
    
    }

    输出结果为:

    java面向对象之接口