Java中的接口( interface)
- 概述
接口( interface) 技术, 主要用来描述类具有什么功能,而并不给出每个功能的具体实现。
接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
接口的特点:
(1)一个类可以实现( implement) 一个或多个接口。Java中 每个类只能扩展于一个类。
(2)接口不是类,尤其不能使用 new 运算符实例化一个接口,却能声明接口的变量。
(3)接口变量必须引用实现了接口的类对象。
(4)接口中的所有方法自动地属于 public。 因此,在接口中声明方法时,不必提供关键字 public o。
(5)与接口中的方法都自动地被设置为 public —样,接口中的变量将被自动设为 public static final。
(6)可以用 instance 检查某对象是否实现了某个特定的接口: if (anObject instanceof Comparable) { . . . }。
(7)接口也可以被扩展,与可以建立类的继承关系一样。
(8)Java8中的新特性,为接口方法提供一个默认实现。 必须用 default 修饰符标记这样一个方法;如果实现类重写了该方法,就覆盖这个方法。接口中还可以有静态方法,可以通过接口名来访问静态方法。 - 接口的使用
2.1 接口的简单使用
关键字 interface声明一个接口,声明一个接口,IStudy.java如下所示:
package interfaceStudy; public interface IStudy { public void study();}
类使用implements 关键字去实现一个接口。
package interfaceStudy;
public class IStudyImpl implements IStudy {
public static void main(String[] args) {
IStudy iStudy = new IStudyImpl();
iStudy.study();
}
@Override
public void study() {
System.out.println(“studying …”);
}
}
2.2 接口的继承
首先第一个接口,IStudy.java:
package interfaceStudy;
public interface IStudy{
public void learn();
public void study();}
第二个接口,IStudent接口,继承IStudy接口。
package interfaceStudy;
public interface IStudent extends IStudy
{
public void study();
public void play();
}
实现类需要重写IStudent接口中方法和IStudent接口继承IStudy接口的方法,如下三个方法,缺少会报错。
@Override
public void learn() {
System.out.println(“learning …”);
}
@Override
public void study() {
System.out.println(“studying …”);
}
@Override
public void play() {
System.out.println(“playing …”);
}
完整测试代码如下所示:
package interfaceStudy;
public class IStudentImpl implements IStudent {
public static void main(String[] args) {
IStudent iStudent = new IStudentImpl();
iStudent.play();
iStudent.study();
iStudent.learn(); }
@Override
public void learn() {
System.out.println(“learning …”);
}
@Override
public void study() {
System.out.println(“studying …”);
}
@Override public void play() {
System.out.println(“playing …”);
}
}