Java面向对象编程中的接口

接口(interface)中可包含的内容:

接口定义:
    public interface 接口名 {}
接口使用:(必须被实现成具体类)
    public class 类名 implements 接口名{}

常量定义:public static final 数据类型 常量名 = 常量值;
    1、前三个关键字可省略;
    2、常量必须赋值;
    3、命名使用全大写,多个单词用'_'连接。
    eg: public static final int NUM_OF_INTERFACE = 25
使用:接口名.常量名

定义抽象方法:
    public abstract 返回值类型 方法名(参数列表);
    1、方法的修饰词只能是固定的两个关键字:public abstract
    2、上述两个关键字可以选择性省略
    eg: public void absFunction1();
        abstract void absFunction2();
        void absFunction4();
        public abstract void absFunction3();
使用:
    在实现类中所有抽象方法都需要被覆盖。(注:若不完全覆盖,可将实现类定义成抽象类)

定义默认方法:(可解决接口升级的问题)
(在接口中声明了具体内容,无需再实现类中重写(有需要可在实现类中覆盖重写))
    public default 返回值类型 方法名(参数列表){
        方法体;
    }

定义静态方法:
    注:不能通过实现类的对象来调用接口静态方法,也不可通过实现类调用
    public static 返回值类型 方法名(参数列表){
        方法体;
    }
    调用方法:只能直接通过接口名称调用,即接口名.方法名

私有方法定义:
    1、为解决接口中多个默认方法之间重复代码问题,默认方法
    private 返回值类型 方法名(参数列表){
        方法体;
    }
    2、为解决接口中多个静态方法之间重复代码问题,静态默认方法
    private staic 返回值类型 方法名(参数列表){
        方法体;
    }

 接口的多继承:一个接口能继承另一个或者多个接口(与类之间的继承比较相似)
   注: 1、需重写所有父接口中的抽象方法,若有重名的,只需重写一次
       2、如果父接口中的默认方法有重名的,那么子接口需要重写一次,否则可以选择是否重写
   eg:interface 接口名 extends 接口名1,接口名2,接口名3... {
            // 重写接口中抽象方法【必须】
            // 重写接口中默认方法【不重名时可选】
        }

接口的多实现:与接口的多继承类似
    eg:class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3... {
            // 重写接口中抽象方法【必须】
            // 重写接口中默认方法【不重名时可选】
        }
注:当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中
    的默认方法重名,子类就近选择执行父类的成员方法。