[public] interface interface_name [extends interface1_name[, interface2_name,…]] { // 接口体,其中可以包含定义常量和声明方法 [public] [static] [final] type constant_name = value; // 定义常量 [public] [abstract] returnType method_name(parameter_list); // 声明方法 }对以上语法的说明如下:
注意:一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类。
public interface A { publicA(){…} // 编译出错,接口不允许定义构造方法 }一个接口不能够实现另一个接口,但它可以继承多个其他接口。子接口可以对父接口的方法和常量进行重写。例如:
public interface StudentInterface extends PeopleInterface { // 接口 StudentInterface 继承 PeopleInterface int age = 25; // 常量age重写父接口中的age常量 void getInfo(); // 方法getInfo()重写父接口中的getInfo()方法 }例如,定义一个接口 MyInterface,并在该接口中声明常量和方法,如下:
public interface MyInterface { // 接口myInterface String name; // 不合法,变量name必须初始化 int age = 20; // 合法,等同于 public static final int age = 20; void getInfo(); // 方法声明,等同于 public abstract void getInfo(); }
<public> class <class_name> [extends superclass_name] [implements interface1_name[, interface2_name…]] { // 主体 }对以上语法的说明如下:
public interface IMath { public int sum(); // 完成两个数的相加 public int maxNum(int a,int b); // 获取较大的数 }2)定义一个 MathClass 类并实现 IMath 接口,MathClass 类实现代码如下:
public class MathClass implements IMath { private int num1; // 第 1 个操作数 private int num2; // 第 2 个操作数 public MathClass(int num1,int num2) { // 构造方法 this.num1 = num1; this.num2 = num2; } // 实现接口中的求和方法 public int sum() { return num1 + num2; } // 实现接口中的获取较大数的方法 public int maxNum(int a,int b) { if(a >= b) { return a; } else { return b; } } }在实现类中,所有的方法都使用了 public 访问修饰符声明。无论何时实现一个由接口定义的方法,它都必须实现为 public,因为接口中的所有成员都显式声明为 public。
public class NumTest { public static void main(String[] args) { // 创建实现类的对象 MathClass calc = new MathClass(100, 300); System.out.println("100 和 300 相加结果是:" + calc.sum()); System.out.println("100 比较 300,哪个大:" + calc.maxNum(100, 300)); } }程序运行结果如下所示。
100 和 300 相加结果是:400 100 比较 300,哪个大:300在该程序中,首先定义了一个 IMath 的接口,在该接口中只声明了两个未实现的方法,这两个方法需要在接口的实现类中实现。在实现类 MathClass 中定义了两个私有的属性,并赋予两个属性初始值,同时创建了该类的构造方法。因为该类实现了 MathClass 接口,因此必须实现接口中的方法。在最后的测试类中,需要创建实现类对象,然后通过实现类对象调用实现类中的方法。
本文链接:http://task.lmcjl.com/news/10634.html