关于Java接口使用总结
来源:互联网 发布:win10怎么改电脑端口 编辑:程序博客网 时间:2024/04/26 00:23
定义
抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更加特殊的”抽象类“——接口(interface)。
接口里不能有普通方法,接口里的所有方法都是抽象方法。
Java 8对接口进行了改进,允许在接口中定义默认方法,默认方法可以提供方法实现。
规则
1、 接口名应该与类名采用相同的命名规则;
2、 一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类;
3、 由于接口定义的是一种规范,因此接口里不能包含构造器和初始化块定义。接口里可以包含成员变量(只能是静态常量)、方法(只能是抽象方法、类方法或默认方法)、内部类(包括内部接口、枚举)定义;
4、 在接口中定义成员变量时,不管是否使用public static final修饰符,接口里的成员变量总是使用这三个修饰符来修饰。而且接口里没有构造器和初始化块,因此接口里定义的成员变量只能在定义时指定默认值;
5、Java 8允许在接口里定义默认方法,默认方法必须使用default修饰,该方法不能使用static修饰,无论程序是否指定,默认方法总是使用public修饰——如果开发者没有指定public,系统会自动为默认方法添加public修饰符,由于默认方法没有static修饰,因此不能直接使用接口来调用默认方法,需要使用接口的实现类的实例来调用这些默认方法;
6、Java 8允许在接口中定义类方法,类方法必须使用static修饰,该方法不能使用default修饰,无论程序是否指定,类方法总是使用public修饰——如果没有指定public,系统会自动为类方法添加public修饰符。类方法可以直接使用接口来调用;
7、接口里的成员默认是使用public static final修饰的,因此即使另一个类处于不同包下,也可以通过接口来访问接口里的成员变量;
注意:
从某个角度来看,接口可被当成一个特殊的类,因此一个Java源文件里最多只能有一个public接口,如果一个Java源文件里定义了一个public接口,则该源文件的主文件名必须与该接口名相同。
public interface Output{ //接口里定义的成员变量只能是常量 int MAX_CACHE_LINE = 50; //接口里定义的普通方法只能是public的抽象方法 void out(); void getData(String msg); //在接口里定义默认方法,需要使用default修饰 default void print(String... msgs) { for(String msg : msgs) { System.out.println(msg); } } //在接口中定义默认方法,需要使用default修饰 default void test() { System.out.println("默认的test()方法"); } //在接口中定义类方法,需要使用static修饰 static String staticTest() { return "接口里的类方法"; }}
8、接口的继承和类继承不一样,接口完全支持多继承,即一个接口可以有多个直接父接口。和类继承相似,子接口扩展某个父接口,将会获得父接口里定义的所有方法、常量;
9、一个接口继承多个父接口时,多个父接口排在extends关键字之后,多个父接口之间以(,)隔开;
10、一个类只能有一个直接父类,包括抽象类;但一个类可以实现多个接口,通过实现多个接口可以弥补Java单继承的不足;
interface interfaceA{ int PROP_A = 5; void testA();}interface interfaceB{ int PROP_B = 6; void testB();}interface interfaceC extends interfaceA , interfaceB{ int PROP_C = 7; void testC();}public class InterfaceExtendsTest{ public static void main(String[] args) { System.out.println(interface.PROP_A); System.out.println(interface.PROP_B); System.out.println(interface.PROP_C); }}
接口用途
①定义变量,也可用于进行强制类型转换;
②调用接口中定义的变量;
③被其他类实现;
- 关于Java接口使用总结
- java中关于接口的知识点总结
- 关于Java使用接口实现多重继承
- Java中Collection接口使用总结
- 关于接口的总结
- 关于接口,总结如下
- 关于Java当中的接口的总结,一点点心得
- 关于Java中抽象类和接口区别的总结
- 关于Java积分签到接口的编写总结
- 关于java使用javacomm20-win32实践总结
- 关于Java中add使用小总结
- 关于java使用javacomm20-win32实践总结
- 关于Java抽象类使用总结
- 关于何时使用接口
- 关于 Java 中的接口
- 关于java 常量接口
- 关于java常量接口
- 关于JAVA接口“实例”
- CodeForces
- Spring 定时器
- ThinkPHP5 数据库事务
- 非递归后序遍历
- 朴素贝叶斯分类器的应用
- 关于Java接口使用总结
- 算法(2.2 归并排序)
- 事务管理之分布式事务
- js中的类型转换
- 笨方法学Python 习题 32: 循环和列表
- 浅谈caffe中train_val.prototxt和deploy.prototxt文件的区别
- log4j配置详情
- HDU 6074 Phone Call (LCA+并查集, 2017 Multi-Univ Training Contest 4)
- QString转换为char *时出现的问题