一、接口的定义中,可以有哪些内容?
如果是java7,接口中可以包含:
1、常量,可以省略public static final关键字。
public static final int NUM_OF_EXAMPLE = 10;
2、抽象方法,可以省略public abstract关键字。(实现类必须重写接口中的所有抽象方法,除非他是一个抽象类)
public abstract void methodAbstract();
如果是java8,接口中可以包含:
3、默认方法,可以省略public关键字,可以被实现类对象调用,也可以被实现类重写。
public default void methodDef(){ System.out.println("defaultMethod"); }
4、静态方法,可以省略public关键字,只能用接口名称调用。
public static void methodSta() { System.out.println("static"); }
如果是java9,接口中可以包含:
5、私有方法,静态和非静态都可以。
private void MethodPri1() { System.out.println("static"); } private static void MethodPri2() { System.out.println("static"); }
二、使用接口时,需要注意:
1、接口是没有静态代码块或者构造方法的;
2、一个类的直接父类只有一个,但是可以实现多个接口,用逗号隔开;
3、如果实现的多个接口中有重复的抽象方法,则实现类只用重写一次;
4、如果实现类没有重写接口的所有抽象方法,则它必须是一个抽象类;
5、如果不同的接口中存在重复的默认方法,则实现类必须对这个方法进行重写;
6、一个雷如果直接父类的方法和接口的方法产生了冲突,(类对象同时可以调用),优先父类。
三、接口是支持多继承的
public interface MyInterface extends Interface1, Interface2{ }
接口的抽象方法数量等于他自己的方法+所有的父接口方法,再去除重复的方法。
1、多个父接口中的抽象方法如果重复,没关系。
2、多个父接口中的默认方法如果重复(产生冲突),接口必须重写该默认方法,并且要带default关键字。
原文:https://www.cnblogs.com/maider/p/13152282.html