兴平网站建设,小江高端网站建设,发布信息的免费平台,网站新闻收录问题定义接口
Java 接口的定义方式与类基本相同#xff0c;不过接口定义使用的关键字是 interface#xff0c;接口定义的语法格式如下#xff1a;
[public] interface interface_name [extends interface1_name[, interface2_name,…]] {// 接口体#xff0c;其中可以包含定义…定义接口
Java 接口的定义方式与类基本相同不过接口定义使用的关键字是 interface接口定义的语法格式如下
[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_name 表示接口的名称。接口名应与类名采用相同的命名规则即如果仅从语法角度来看接口名只要是合法的标识符即可。如果要遵守 Java 可读性规范则接口名应由多个有意义的单词连缀而成每个单词首字母大写单词与单词之间无需任何分隔符。extends 表示接口的继承关系interface1_name 表示要继承的接口名称constant_name 表示变量名称一般是 static 和 final 型的returnType 表示方法的返回值类型parameter_list 表示参数列表在接口中的方法是没有方法体的。注意一个接口可以有多个直接父接口但接口只能继承接口不能继承类。
接口对于其声明、变量和方法都做了许多限制这些限制作为接口的特征归纳如下 具有 public 访问控制符的接口允许任何类使用没有指定 public 的接口其访问将局限于所属的包。方法的声明不需要其他修饰符在接口中声明的方法将隐式地声明为公有的public和抽象的abstract。在 Java 接口中声明的变量其实都是常量接口中的变量声明将隐式地声明为 public、static 和 final即常量所以接口中定义的变量必须初始化。接口没有构造方法不能被实例化。例如
public interface A {publicA(){…} // 编译出错接口不允许定义构造方法
}一个接口不能够实现另一个接口但它可以继承多个其他接口。子接口可以对父接口的方法和常量进行重写。例如
public interface StudentInterface extends PeopleInterface {// 接口 StudentInterface 继承 PeopleInterfaceint age 25; // 常量age重写父接口中的age常量void getInfo(); // 方法getInfo()重写父接口中的getInfo()方法
}例如定义一个接口 MyInterface并在该接口中声明常量和方法如下
public interface MyInterface { // 接口myInterfaceString name; // 不合法变量name必须初始化int age 20; // 合法等同于 public static final int age 20;void getInfo(); // 方法声明等同于 public abstract void getInfo();
}实现接口
接口的主要用途就是被实现类实现一个类可以实现一个或多个接口继承使用 extends 关键字实现则使用 implements 关键字。因为一个类可以实现多个接口这也是 Java 为单继承灵活性不足所作的补充。类实现接口的语法格式如下
public class class_name [extends superclass_name] [implements interface1_name[, interface2_name…]] {// 主体
}对以上语法的说明如下 public类的修饰符superclass_name需要继承的父类名称interface1_name要实现的接口名称。实现接口需要注意以下几点 实现接口与继承父类相似一样可以获得所实现接口里定义的常量和方法。如果一个类需要实现多个接口则多个接口之间以逗号分隔。一个类可以继承一个父类并同时实现多个接口implements 部分必须放在 extends 部分之后。一个类实现了一个或多个接口之后这个类必须完全实现这些接口里所定义的全部抽象方法也就是重写这些抽象方法否则该类将保留从父接口那里继承到的抽象方法该类也必须定义成抽象类。在程序的开发中需要完成两个数的求和运算和比较运算功能的类非常多。那么可以定义一个接口来将类似的功能组织在一起。示例接口的实现方式。
1 . 创建一个名称为 IMath 的接口代码如下
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。
3 . 最后创建测试类 NumTest实例化接口的实现类 MathClass调用该类中的方法并输出结果。该类内容如下
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 接口因此必须实现接口中的方法。在最后的测试类中需要创建实现类对象然后通过实现类对象调用实现类中的方法。