接口(interface)
2015-10-18 22:56
120 查看
前一篇中介绍了abstract关键字,该关键字允许在类中创建一个或多个只有声明而没有定义的方法,这些方法由类的继承者实现。
interface关键字产生一个完全抽象的类,其中没有任何具体的实现。
interface是一个极度抽象的类,它允许通过implements关键字创建一个能够被向上转型为多种基类型的类,从而实现多继承变种的特性。
接口中的方法是public的(不管你是否显式的进行了声明),所以在类中实现接口的方法时必须定义为public;否则它只能得到缺省的包访问权限,这样在方法被继承的过程中,其可访问权限就被降低了(这是Java编译器不允许的)。
当实现某个接口时,并不需要实现嵌套在其内部的任何接口。
public和“包访问”的嵌套接口都可以被实现为public、包访问以及private的嵌套类。
private接口
在类中嵌套的接口也可以被实现为private。private接口可以被实现为public内部类也可以被实现为private内部类,但这两个实现的内部类都只能被自身类使用。
private接口不能在定义它的类之外被实现
interface关键字产生一个完全抽象的类,其中没有任何具体的实现。
interface是一个极度抽象的类,它允许通过implements关键字创建一个能够被向上转型为多种基类型的类,从而实现多继承变种的特性。
interface的访问权限
interface的访问权限有public和包访问权限(默认)两种。接口中的方法是public的(不管你是否显式的进行了声明),所以在类中实现接口的方法时必须定义为public;否则它只能得到缺省的包访问权限,这样在方法被继承的过程中,其可访问权限就被降低了(这是Java编译器不允许的)。
interface实现多态
向上转型可以将一个类与其继承的基类(普通类、抽象类)和接口连接起来,剩下的与只要操作基类或接口就可以实现多态。注意:在组合不同的接口中使用相同的方法名通常会造成代码可读性的混乱,请尽量避免这种情况。
扩展接口
博客开头说过interface是一个极度抽象的类,所以我们可以通过继承来扩展接口。群组常量
由于放入接口中的字段都自动是static和final的,所以接口成为了一种很便捷的用于创建常量组的工具。final数据初始化
在接口中定义的字段自动是static和final的,它们不能是“空白final”,但可以被非常量表达式初始化。嵌套接口
接口可以嵌套在类或其他接口中。当实现某个接口时,并不需要实现嵌套在其内部的任何接口。
在类中嵌套接口
在类中嵌套的接口可以像非嵌套接口一样,拥public和“包访问权”两种权限。public和“包访问”的嵌套接口都可以被实现为public、包访问以及private的嵌套类。
private接口
在类中嵌套的接口也可以被实现为private。private接口可以被实现为public内部类也可以被实现为private内部类,但这两个实现的内部类都只能被自身类使用。
private接口不能在定义它的类之外被实现
接口之间嵌套
嵌套在另一个接口中的接口自动是自动就是public的,而不能声明为private的。相关文章推荐
- 第一章软件工程要点
- 结对编程
- 结对编程
- sqlite数据库学习
- Shell+Curl网站状态检查脚本 抓出无法访问的站点
- http之keepalive
- Android_主线程与子线程之间相互通信
- 遥感影像分类精度评价
- 如何在网页中嵌入百度地图
- Object-C ---2
- Unique Binary Search Trees
- SQLLite--判断表是否存在,存在则删除,反之创建
- mybatis动态SQL - like
- STL之hashtable实现
- IOS基础UI之(八)UIScrollView
- ALM需求跟踪矩阵导出出错解决
- 深入浅出JMS(一)——JMS简介
- 理解Unity3d的ForceMode | Understanding ForceMode in Unity3D
- Python(七)python下的内部函数库和第三方函数库
- 遥感应用综述