java8改进的接口:
来源:互联网 发布:淘宝网首页官网天猫 编辑:程序博客网 时间:2024/05/06 20:04
java8改进的接口:
抽象类是从多个类中抽象出来的模板,如果将这种抽象进行更彻底,可以提炼出来一种更加特殊的“抽象类”–接口,接口里不能包含普通方法,接口里的所有方法都是抽象方法,java8对接口进行了改进,允许在接口中定义默认方法,默认方法可以定义方法实现。
——————————————————————————————————————————————————————
java8中接口的定义:
和类定义不同,定义接口不再使用class关键字,而是使用interface关键字。
[修饰符] interface 接口名 extends 父接口1,父接口2..
{
0个到多个常量定义
0个到多个抽象方法定义
0个到多个内部类,接口,枚举定义
0个到多个默认方法或者类定义
}
(1)修饰符可以是public或者省略,如果省略,则默认采用包权限访问控制符,即只有在相同包结构下才能访问该接口。
(2)一个接口只能有多个直接父接口,但接口只能继承接口,不能继承类。
(3)由于接口定义的是一种规范,因此接口不能包含构造器和初始化定义
(4)接口里可以包含成员变量(只能是静态常量)、方法(只能是抽象方法)、内部类(内部接口,枚举)定义。
(5)在接口中定义成员变量时,不管是否使用 public static final 修饰,接口里的成员变量总是使用这三个修饰符来修饰。
(6)接口里没有构造器和初始化块,因此接口里定义的成员变量只能在定义时指定默认值。
下面两种方式结果完全一样:
//系统自动为接口里定义的成员变量增加 public static final
int MAX_SIZE=50;
public static final int MAX_SIZE=50;
public interface Output{ //接口里定义的成员变量只能是常量 int MAX_CACHE_LINE=50; //接口里定义的方法只能是public 的抽象方法 void out(); void getData(String msg); //在接口里定义默认方法,需要使用default修饰 default void print(String ...msg) { for(String msg:msg) { System.out.println(msg); } }//在接口里定义默认方法,需要使用default修饰 default void test() { System.out.println("默认的test()方法"); } //在接口中定义类方法,需要使用static修饰 static String StaticTest() { return "接口里的类方法"; }}
(1)java8允许在接口中定义默认方法,默认方法必须使用default修饰,不能用static修饰。
(2)java8允许在接口中定义类方法,类方法必须使用static修饰,该方法不能使用default修饰。
(3)一个java源文件里最多只能有一个public接口,如果一个java源文件里定义了一个接口,则该源文件里的主文件名必须与该接口名相同。
- java8改进的接口
- java8改进的接口:
- Java8改进的接口
- java8改进的接口(一)
- java8改进的接口(二)
- java8中concurrentHashmap的改进
- Java8的改进和新的特性
- java8中对ConcurrentHashMap的改进
- Java8对读写锁的改进:StampedLock
- java8改进的HashMap和Hashtable类
- JAVA8 JDK 对字符串连接的改进
- java8中HashMap相对于java7的改进
- java8对接口的改变
- java8接口的新增功能
- Java8 接口的默认方法
- Java8接口的默认方法
- java8中Hashmap改进
- Java8---接口
- Jquery plugin制作:浮动树菜单
- JavaCC使用小结
- 最近java面试被问到的问题
- HDU5122【水】
- 原码, 反码, 补码 详解
- java8改进的接口:
- Grails 快速入门(二)
- swift什么时候才会火
- 操作系统linux tcp/ip
- 如何将自己的项目上传到github
- HTMl5的sessionStorage和localStorage
- UVa401
- [零碎知识]arm-linux程序反编译bin文件成汇编的指令
- YUV 与 RGB的转换