接口的结构与抽象类非常相似,接口本身也具有数据成员与抽象方法,但它与抽象类有下列不同:
(1)接口的数据成员必须是静态的,并一定要初始化,且此值不能再被修改,若省略成员变量的修饰符,则系统默
认为 public static final。
(2)接口中既可以有声明为abstract的抽象方法,也可以有用 static声明的静态方法和用default声明的默认方
法。
接口与抽象类一样不能用new运算符直接创建对象。相反地,必须利用接口的特性来建造一个新的类,然后再用它
来创建对象,利用接口建造新类的过程称为接口的实现( implementation),接口的实现类似于继承,只是不用
extends关锥字,而是在声明一个类的同时用关键字 implements来实现一个接口。
一个类要实现一个接口时,应注意以下问题:
(1)如果实现某接口的类不是用 abstract修饰的抽象类,则在类的定义部分必须实现指定接口的所有抽象方
法,即非抽象类中不能存在抽象方法。
(2)一个类在实现某接口的抽象方法时,必须使用完全相同的方法头。否则,只是在定义一个新方法,而不是
实现已有的抽象方法。
(3)接口中抽象方法的访问控制修饰符都已指定为 public,所以类在实现方法时,必须显式地使用public修
饰符,否则将被系统警告为缩小了接口中定义的方法的访问控制范围。