包和接口
来源:互联网 发布:android互动屏保源码 编辑:程序博客网 时间:2024/06/05 05:01
这是《Java8编程参考官方教程》的第9章
接口和抽象类很相似,但一个类可以实现多个接口;类只能继承单个超类(抽象类或其他类)。
包:用于保持类的名称空间相互隔离,不会发生命名冲突。
private和public大家都知道。protected对同一个包内的类和不同包内的子类可见。无访问修饰符则只对同一个包内的类可见。
接口(interface):接口断开了一个方法或一系列方法的定义与继承层次之间的关联。这是接口的真正功能所在。
在JDK 8之前,接口只能定义“有什么”,JDK 8之后,可以在接口方法中添加默认实现。
在实现接口的类里,实现接口的方法必须被声明为public。
InterfaceClass c = new ImplementsClass();那么c调用的是ImplementsClass里的方法,但是c不能访问ImplementsClass类的其他任何成员。接口引用变量c只知道由接口声明的方法。(多态就是这个意思,在这里是通过接口引用变量访问接口的多个实现)。
如果类包含了一个接口,但是没有实现该接口定义的全部方法,那么必须将类声明为abstract。派生自此类的所有类还都必须实现接口定义的方法,或者被声明为abstract。
嵌套接口:可以被声明为public、private或protected。而顶级的接口,只能是public或者默认访问级别。当在封装范围之外使用嵌套接口时,必须使用包含嵌套接口的类或接口的名称进行限定。
接口中的变量:如果接口中声明有变量,那么变量是final的,并且需要初始化。
接口可以扩展:如果类实现的接口继承自另外一个接口,那么类必须实现在接口继承链中定义所有的方法。
默认接口方法:JDK 8新增的功能。但此功能并没有改变接口的关键特征:不能维护状态信息。这也是接口和类的决定性的区别。默认方法的声明前面必须带有关键字Default。
默认方法的优点:
- 优雅地随时间演化接口。
- 提供可选功能,但是类不必在不需要功能时提供占位符实现。
多级继承的问题:Java不支持类的多级继承。
当一个类实现了多个接口,并且有几个接口提供了同名的方法并且都有默认实现时,会出现冲突,Java定义了以下规则:
- 类实现的优先级高于接口的默认实现。
- 如果类没有重写这个重名的默认实现,则会出现错误。
- 如果是一个接口继承了另一个接口的情况,则继承接口的版本具有更高优先级。
- 可以使用super显式引用被继承接口中的默认实现。
在接口中使用静态方法:这是JDK 8的新增功能。接口定义的静态方法可以独立于任何对象调用。因此,在调用静态方法时,不需要实现接口,也不需要接口的实例。通过使用接口名,后跟句点,然后是方法名,就可以调用静态方法。
实现接口的类或子接口不会继承接口中的静态方法。
p.s.我也想写得有次序一点、好看一点,但是... ...
0 0
- 接口和包
- 接口和包
- 包和接口
- 包和接口
- Java接口和包
- 包和接口
- java基础教程-包和接口
- Java 包和接口笔记
- Java之包和接口
- IP包的生成和发送接口
- JAVA入门教程:对象、类、包和接口
- 抽象类、接口和包1
- Thrift 接口生成和jar包缩减
- MyBatis常见接口和jar包介绍
- java常用的类 包 和接口
- 【Java】继承、抽象、接口和包
- JAVA程序员必读:基础篇(6)---接口和包
- IP包的生成和发送接口(转载)
- android 让一个控件按钮居于底部的几种方法
- Arduino 卡片12彩灯调光台
- Geekband STL与泛型编程 第二周笔记 暗影行者
- 感受异或的神奇
- 设计模式系列1:单体模式(Singleton)
- 包和接口
- 第12周 数据结构和算法 线性表-5 栈-压入和弹出运算
- myeclipse 实现框架 spring+springmvc+springsecurity+myibatis+mysql用户认证和人员增删改查
- 如何查询几年的网站历史排名变化
- CSS入门
- 九度OJ 1012 畅通工程 (深度遍历求强连通分量个数)
- 高并发量网站解决方案
- ajax调后台servlet,把返回json用vue做绑定
- Linux下ln命令使用