【default 关键字】
目的:
对于 Java8 之前的语法----“接口中只能定义抽象方法,实现类必须实现全部抽象方法”,一般是不能拓展接口的,如果拓展则所有实现类都要改动。Java8 因此对接口引入了 default 默认方法。实现类不需要实现就能继承该方法,同时也可以复写该方法。
使用说明:
①不能重写基类 Object 中的 public 方法。
②类优先原则:如果父类和接口默认方法有相同名称及参数列表的方法,则使用父类中的。
③如果实现类继承的接口A和接口B有相同名称及参数列表的方法,需要手动重写来解决冲突。
【静态方法】
目的:
将相关的方法内聚在接口中,而不必创建新的对象。
使用说明:
使用方法和类中的静态方法一样,直接通过 接口名.静态方法名 调用。接口中的静态方法是不会被继承的,实现类无法通过自身调用,也不能重写。(注:本就不鼓励使用实例调用静态方法,在编码的时候,实例.的时候IDEA不会提示静态方法,需要自己全拼才会显示,而不是实例不能调用静态方法。)
【Java8 中接口与抽象类的区别】
①抽象类可随意继承类和接口,接口只能继承接口。
②抽象类的变量和普通类没有区别,接口变量都是public static void。
③抽象类有构造方法,接口没有。
④抽象类的静态方法能被子类继承,接口不能。