review06
使用关键字interface来定义一个接口。接口的定义和类定义很相似,分为接口声明和接口体。
接口体中包含常量的声明(没有变量)和抽象方法两部分。接口中只有抽象方法,没有普通方法。而且接口体中所有的常量的访问权限一定都是public,而且是static常量,所有抽象方法的访问权限一定都是public(允许省略public abstract修饰符)。接口中的常量一定是public final static修饰的。
在java语言中,接口由类来实现以便使用接口中的方法。如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。由于接口中的方法一定是public abstract方法,所以类在重写接口方法时不仅要去掉abstract修饰符、给出方法体,而且方法的访问权限一定要明显地用public来修饰(否则会降低访问权限)。
程序可以用接口名访问接口中的常量,但是如果一个类实现了接口,那么该类可以直接在类体中使用该接口中的常量。
定义接口时,如果关键字interface前面加上public,就称这样的接口是一个public接口。public接口可以被任何一个类实现。如果一个接口不加public修饰,就称做友好接口,友好接口可以被与该接口在同一包中的类实现。
如果父类实现了某个接口,那么子类自然实现了该接口。
接口也支持继承,支持多继承,类可以同时实现多个接口。
接口的思想在于它可以要求某些类有相同名称的方法,但方法的具体内容可以不同,即要求这些类实现接口,以保证这些类一定有接口中所声明的方法。
接口回调
和类一样,接口也是java中一种重要数据类型,用接口声明的变量称作接口变量。
在java中,接口回调是指:可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。
接口回调非常类似于上转型对象调用子类重写的方法。接口回调和上转型对象是多态的体现。由接口产生的多态就是指不同的类在实现同一个接口时可能具有不同的实现方式,那么接口变量在回调接口方法时就可能具有多种形态。
如果某个问题不需要继承,只是需要若干个类给出某些重要的abstract方法的实现细节,可以考虑使用接口。
面向接口编程
使用接口进行程序设计的核心思想是使用接口回调,即接口变量存放实现该接口的类的对象的引用。
review06的更多相关文章
随机推荐
- hbase运行时ERROR:org.apache.hadoop.hbase.PleaseHoldException:Master is initializing的解决方法
最终解决了,其实我心中有一句MMP. 版本: hadoop 2.6.4 + hbase0.98 第一个问题,端口问题8020 hadoop默认的namenode 资源子接口是8020 端口,然后我这接 ...
- Truthy Falsy
https://developer.mozilla.org/zh-CN/docs/Glossary/Truthy falsy(虚值)是在 Boolean 上下文中已认定可转换为‘假‘的值. JavaS ...
- Python函数参数默认值的陷阱和原理深究(转)
add by zhj: 在Python文档中清楚的说明了默认参数是怎么工作的,如下 "Default parameter values are evaluated when the func ...
- MySQL错误日志提示innodb_table_stats和innodb_index_stats不存在故障处理
查看MySQL error日志,发现有如下报错 7efbc586f700 InnoDB: Error: Table "mysql"."innodb_table_stats ...
- Django 进阶(分页器&中间件)
分页 Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views h ...
- ACM中使用 JAVA v2. 1
ACM中使用JAVA v2.1 严明超 (Blog:mingchaoyan.blogbus.com Email:mingchaoyan@gmail.com) 0.前 言 文前声明:本文只谈java用于 ...
- Linux中的正则表达式
* 前一个字符匹配0次或任意次. 匹配除了换行符外任意一个字符^ 匹配行首$ 匹配行尾[] ...
- Kafka的架构
1.Kafka整体架构 一个典型的Kafka集群中包含若干producer(可以是web前端产生的page view,或者是服务器日志,系统CPU.memory等),若干broker(Kafka ...
- Python之函数总结
一,函数的定义与调用 定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":". def 是固定的,不能变,必须是连续的def三个字母,不能分开 def 函数名 ...
- 前端基础之JavaScript_(3)_DOM对象
JavaScript之DOM对象 HTML DOM HTML Document Object Model(文档对象模型) HTML DOM 定义了访问和操作HTML文档的标准方法 HTML DOM ...