自学JAVA之路之接口(入门随笔)

  这是记录自己学习java的历程,对自己学习做个记录。仅作参考,有错误还请大佬指点。

-------------------------------------------------------分割线---------------------------------------------------------

  在简单接触java之后,比较新颖的点就是一个接口的定义,为什么会有接口的产生呢。主要的原因可能就是因为Java的特性就是只有单继承(extends)的模式,不支持多继承。而为了实现类似多继承的这样一个行为。所以有了接口的产生。

  接口的特征:

    1.接口中所有的方法都是抽象方法,不能包含方法的是实现。

    2.接口的所有的方法和常量无论是否添加public,默认的权限有且只有一个,都是public.

    3.接口不能被实例化。

    4.接口的子类必须实现接口中的所有方法,跟抽象类不同的是,抽象类中的抽象犯法才必须被子类所实现

    5.子类可以拥有多个接口。

    6.接口中的变量都是静态常量,即使没用static来修饰,它也是静态常量。

  接口的用法:

    1.使用interface关键字来修饰。

    2.接口中可以包含多个方法,且方法跟抽象类中的抽象方法一样,可以不用实现方法,但子类在实现接口的时候采用implements的关键字,并且必须实现接口里的所有方法。

    3.类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。

      public interface InterFaceDemo

      {

        void show();

        //该写法也可以如下

        public abstrack void show();

      };

     子类在实现接口的时候:

      //假如目前还有一个接口是TestDemo;

      public class InterFaceDemo implements InterFaceDemo,TestDemo{

        //子类在实现接口的时候必须实现接口定义的方法才可以

        @Override

        public void show(){

          System.out.println("这是实现InterFaceDemo接口里的方法");

        }

      }

  了解过抽象类的可能会发现接口跟抽象类有点类似,为了区分下两者的区别,这里做个说明:

    1.抽象类可以拥有抽象方法和普通方法,但接口只能包含抽象方法。并且子类继承的时候只需实现抽象类里的抽象方法,而不需要实现普通方法。但却必须实现接口里的所有方法。

    2.抽象类修饰符为abstrack,接口为interface。

    3.抽象类在子类实现的时候是单继承,而接口是多继承。

    4.子类使用extends来继承抽象类,使用implement来实现接口。

    5.抽象类中可以定义成员变量,而接口只能定义静态常量。

    6.两者都不能被实例化,但抽象类可以拥有构造方法,而接口没有。

    7.抽象类中可以实现接口。并且可以不需要实现接口方法。而接口只能继承接口,不能实现接口。

  总结如下:

    接口更相当于一种约定,一种规则,一种标准。每个子类在实现接口的时候都必须遵守这个标准。只关心实现类有何能力,而不关心实现这个能力的细节。

    并且在项目中能多使用接口就使用接口,把单继承的父类留在最关键的地方。

原文地址:https://www.cnblogs.com/weirdojava/p/13258233.html