接口(interface):这种技术主要用来描述类具有什么功能而并不给出每个功能的具体实现。接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
接口特点:
A:使用interface关键字表示
格式:interface 接口名{}
B:接口不能通过new实例化,只能通过多态来实例化
C:接口的子类:
可以是抽象类,但没有什么意义
可以是具体的实现类,使用implement表示
格式:class 类名 implement 接口名{}
可以是接口,使用extends(java源码 interface BeanContext extends Collection)
接口的成员变量、成员方法、构造方法之间的关系:
成员变量:只能是常量,并且是静态的
默认修饰符是:public static final
构造方法:无
接口实现类中的构造方法的super(),是Object的构造方法
查看API可知Object的构造只有一个:无参数构造,所以子类的构造默认都有一个无参的super();
成员方法:
1.8版本之前:只能是抽象方法,默认修饰符是 public abstact
1.8版本:可以出现带方法体的方法,主要有2种:默认方法和静态方法
/**
* java1.8版本接口的新特性:可以定义带有方法体的方法,default和static
*/
public class InterfaceDemo1 {
public static void main(String[] args) {
Interface1 inter = new Interface1Impl();
inter.getNameDefault();
inter.show();
Interface2.getNameStatic();
}
}
interface Interface1{
void show();
default void getNameDefault(){
System.out.println("接口中的带有方法体的默认方法");
}
}
interface Interface2 extends Interface1{
void method();
static void getNameStatic(){
System.out.println("接口中的带有方法体的静态方法");
}
}
class Interface1Impl implements Interface2 {
@Override
public void show() {
System.out.println("接口实现类--show");
}
@Override
public void method() {
System.out.println("接口实现类--method");
}
}
网友评论