文章标题
2016-03-07 20:22
281 查看
接口的相关知识
接口里不能包含普通方法,接口里的所有方法都是抽象方。java8允许在接口中定义默认方法,默认方法可以提供方法实现;类是一种具体实现体;接口定义了一种规范,接口定义了某一批类所需遵守的规范,它不关心这些类的具体实现,她只规定了这一批类必须实现的方法;只要提供这些方法的实现,都符合这个接口;
接口内部方法没有方法体
她体现的是规范和实现分离的设计思想;以主板上的PCI插槽为例,只要一块显卡遵守了PCI的接口规范,就可以插入插槽,与主机正常通讯;主机并不关心这一块显卡是谁实现的,内部如何实现;因此:接口定义的是多个类共同的公共行为规范;这些行为是与外部交流的通道;
接口的定义
[修饰符] interface 接口名称 extends 父接口,...{ 静态常量 抽象方法 内部类 }
1、接口里面不能包含的有 a、构造器 b、初始化块 2、接口里可以包含的有 a、静态常量(只有这个成员变量) b、方法:抽象实例方法、类方法、默认方法(default) c、内部类(包括内部接口、枚举) 3、注意点 a、默认修饰符为包权限访问控制符protected,也可以是public b、接口命名常用形容词,老规矩,首字母大写 c、接口里的所有成员都必须是public访问权限 d、接口里的常量系统会默认增加static和final修饰符 即int MAX_C=12;与 public static final int MAX_C=12;结果一样 e、接口里的普通方法默认都用public abstract修饰,即没方法体; f、类方法、和默认方法都必须有方法体 g、默认方法必须使用default修饰,不能使用static,因此他属于接口实现类的实例;
接口实例
public interface Output{ //定义静态常量 int MIN_XING=122; //接口里定义的普通方法也是用public修饰的抽象方法 void say(); void hello(String msg); //定义类方法 //类方法需要static修饰 static String staticTest(){ return "hello,world"; } //定义默认方法 default void test(){ System.out.println("默认方法用default修饰"); } }
接口的继承
接口支持多继承,且只能继承接口;子接口在扩展父接口的时候,和类继承一样,也会获得父接口里定义的所有抽象方法、常量;使用接口
注意事项1、一个类实现一个或多个接口,这个类就必须实现接口里所有的抽象方法 2、一个类实现某个接口的时候,该类将会获得接口中定义的常量、方法等;
所以接口的主要用途如下:
1、定义变量,以及进行强制类型转换 2、调用接口中定义的常量 3、被其他类实现
接口和抽象类的异同
1、接口和抽象类的特征a、接口和抽象类都不能被实例化,用于被其他类实现和继承; b、都可以包含抽象方法;
2、区别
a、接口作为系统与外界交互的窗口,体现的是一种设计规范 a.1对于接口的实现者而言,接口规定了实现者必须实现的一些方法 a.2对于接口的调用者而言,接口规定了调用者可以调用哪些方法(服务) b、接口里只能包含抽象实例方法和默认方法,不能为普通方法提供方法体;而抽象类可以包含完整的普通方法; c、接口里面只能定义静态常量,不能定义非静态常量,而抽象类都可以 d、接口里面不可以包含构造器;抽象类里面可以有构造器,但是并不是用于创建抽象类的对象,而是让其子类来调用这些构造器来完成属于抽象类的初始化过程; e、接口里面不可以有初始化代码块,抽象类里面阔以有;
核心(功能):
1、当在一个程序中使用接口时,接口是多个模块间的耦合标准; 2、当在多个程序间使用接口时,接口是多个程序之间的通信标准
总结
1、接口类似于整个系统的“总纲”,它指定了系统各模块应该遵循的标准,因此不应该经常改变; 2、抽象类作为系统中多个类的共同父类,更多的体现的是一种设计模式;
接口体现的是一种规范和实现分离的哲学;利用接口可以极好的降低系统的各模块之间的耦合度;,从而提高系统的可扩展性和可维护性;
还剩下两种常见的场景来示范面向接口编程的优势;p196相关文章推荐
- <BLE>cc2540主机获取各个从机广播
- 素数判定 费马測试
- 玩转iOS开发 - 简易的实现2种抽屉效果
- 让 cell 显示底部线条时,总是有几个线条被隐藏.
- Codeforces Round#344
- 图像纹理
- IOS开发-SQLite数据库
- Caffe中配置每一个层的结构
- didReceiveMemoryWarning 处理总结
- leetcode 27. [Array]Remove Element
- 小程序 dota2商店系统
- Spring项目集成Spring-Session以及可能遇到的问题
- Android:封装Volley网络下载示例
- Leetcoede 112 Path Sum 二叉树
- 算法---分治法
- 构建之法--软件工程学习随笔之一
- ListView的性能优化之convertView和viewHolder
- 阿里架构之旅(三)——动物园管理者zookeeper
- leetcode26. [Array]Remove Duplicates from Sorted Array
- 《机电传动控制》第二周作业