JAVA接口 JAVA中接口到底有什么作用,我怎么感觉不到呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为java中是单继承的,为了实现多重继承,所以就引入了接口这个机制。实现对接口编程而不是对类编程,降低模块间的耦合 为什么使用接口 两个类中的两个类似的功能,调用他们的类动态的决定一种实现,那他们提供一个抽象父类,子类分别实现父类所定义的方法。 问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个超类,解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。 接口是可插入性的保证。 在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。 我们关心的不是那一个具体的类,而是这个类是否实现了我们需要的接口。 接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。 类型 使用Java接口将软件单位与内部和外部耦合起来。使用Java接口不是具体的类进行变量的类型声明,方法的返还类型声明,参量的类型声明,以及数据类型的转换。 在理想的情况下,一个具体的Java类应当只实现Java接口和抽象Java类中声明的方法,而不应当给多余方法。 类型等级结构 Java接口(以及抽象类)一般用来作为一个类型的等级结构的起点。 如果一个类已经有了一个主要的超类型,那么通过实现一个接口,这个类可以拥有另一个次要的超类型,这种次要的超类型叫做混合类型。 java中是单继承的,为了实现多继承,就定义了接口这个概念,一个类只有一个直接父类,为了不打破树状结构,又能实现多继承,接口可以轻松实现,接口中的方法可以覆盖,这样就降低了类与类之间的关系,也就是降低了模块间的耦合, java接口的用处主要体现在下面几个方面: (1)通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。 (2)通过接口可以指明多个类需要实现的方法。 (3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。 类描述了一个实体,包括实体的状态,也包括实体可能发出的动作。 接口定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。 所以接口有点象一个规范、一个协议,是一个抽象的概念;而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。 从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。 所以就你的问题: 1、接口中定义类方法的原型,但是不能说是空方法,因为空方法的意思是有实现体,只不过实现体是空操作。实际上接口没有定义任何实现体。具体的实现体都是在实现接口的类中,接口只是定义了这些方法的调用方式。 你当然也可以不用接口,直接在类里面写方法,但是如果你的一组方法需要在很多类里实现,那么把它们抽象出来,做成一个接口规范,不是更好么? 2、一个类描述了一个实体,这个实体可能是一个复杂的对象,它的动作很多,如果把这些动作分类,用接口a定义其中的某一组动作,接口b定义其中的另外一组动作,这样的结构,比较清楚。 这种方式具备了多继承的优点,避免了多继承的缺陷。实际上在历史上,接口在很大程度上,是为了解决多继承带来的种种问题而设计出来的。 3、包中那些已定义的接口,怎么知道那里面定义了什么方法。 接口里定义了方法的输入输出,这些都是协议,具体的实现都在每个类中。对于很多只需要抽象接口的地方,不需要知道具体的类是什么,只要这个类实现了这个接口就可以了 与其说java是面向对象的程序设计语言,但不如说是面向接口的程序设计语言,面向接口的封装性更好. 因为多继承会使程序好复杂,所以JAVA只支持单继承!可是比如:鱼是一种动物,也可以是食物!这个时候就须要多继承,怎么办呢? JAVA就定义出了接口的概念!C++ 支持多继承,但真的很复杂,JAVA好多了! 在这我就举个连接数据库的例子吧,我们JAVA程序员肯定会经常和数据库打交道,所以SUN公司肯定会给我们提供链接和操作数据库的方法吧,但是我们再仔细想想,全世界的数据库厂商不止一家吧!它里面的实现原理肯定也大有不同吧!那么SUN公司给你们每个数据库厂商都要写上一大堆的方法去连接和操作你,如果真的那么做了,SUN公司肯定会疯的,再说了谁知道以后还有什么新的数据库会出现,所以那样做肯定是相当不现实的,这时接口可就要发威了,SUN公司会提供大量的接口,里面会写好多空方法,SUN还会给这些方法起个比较有意义的名字,作用就是要让实现我这接口的类明白你要做什么事,但具体怎么做我就不管了,然后SUN会把这些接口都装到一个大盒子里(JDBC),如果哪家数据库厂商想跟我连接那你就去实现我这些接口然后你们自己去写大量的代码来实现我的所有的方法,这就是你们数据库厂商的事了,比如说SQLserver和oracle它们分别用不同的方法实现了SUN给的那些接口,然后把这些类再打成jar包(驱动类),我们就可以通过这些包对相应的数据库进行操作了。这下发现JAVA接口的作用了吧! 百度不到答案,所以来这里了 求教socket读写集合问题~~ ****tomcat6 老是内存一断增长 某家公司的笔试题! (希望对刚出道的同仁有帮助!) 专家级问题 初学者提问,好心人告诉下! 请问,如何写一个菜单的无限分类??????? 高分悬赏--->文件下载程序~~~ 大家讨论!用jsp生成静态页和不生成静态页在大量用户访问的情况下?有何区别? 课后作业题目——很简单的! 关于JMF采集摄像头视频流,有兴趣的来看看 输入一个字符串 ,按这个字符串相反的顺序输出
实现对接口编程而不是对类编程,降低模块间的耦合
两个类中的两个类似的功能,调用他们的类动态的决定一种实现,那他们提供一个抽象父类,子类分别实现父类所定义的方法。
问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个超类,解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。
接口是可插入性的保证。
在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。
我们关心的不是那一个具体的类,而是这个类是否实现了我们需要的接口。
接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。
类型
使用Java接口将软件单位与内部和外部耦合起来。使用Java接口不是具体的类进行变量的类型声明,方法的返还类型声明,参量的类型声明,以及数据类型的转换。
在理想的情况下,一个具体的Java类应当只实现Java接口和抽象Java类中声明的方法,而不应当给多余方法。
类型等级结构
Java接口(以及抽象类)一般用来作为一个类型的等级结构的起点。
如果一个类已经有了一个主要的超类型,那么通过实现一个接口,这个类可以拥有另一个次要的超类型,这种次要的超类型叫做混合类型。
java接口的用处主要体现在下面几个方面:
(1)通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。
(2)通过接口可以指明多个类需要实现的方法。
(3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。 类描述了一个实体,包括实体的状态,也包括实体可能发出的动作。 接口定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。 所以接口有点象一个规范、一个协议,是一个抽象的概念;而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。 从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。 所以就你的问题: 1、接口中定义类方法的原型,但是不能说是空方法,因为空方法的意思是有实现体,只不过实现体是空操作。实际上接口没有定义任何实现体。具体的实现体都是在实现接口的类中,接口只是定义了这些方法的调用方式。 你当然也可以不用接口,直接在类里面写方法,但是如果你的一组方法需要在很多类里实现,那么把它们抽象出来,做成一个接口规范,不是更好么? 2、一个类描述了一个实体,这个实体可能是一个复杂的对象,它的动作很多,如果把这些动作分类,用接口a定义其中的某一组动作,接口b定义其中的另外一组动作,这样的结构,比较清楚。 这种方式具备了多继承的优点,避免了多继承的缺陷。实际上在历史上,接口在很大程度上,是为了解决多继承带来的种种问题而设计出来的。 3、包中那些已定义的接口,怎么知道那里面定义了什么方法。 接口里定义了方法的输入输出,这些都是协议,具体的实现都在每个类中。对于很多只需要抽象接口的地方,不需要知道具体的类是什么,只要这个类实现了这个接口就可以了
可是比如:鱼是一种动物,也可以是食物!
这个时候就须要多继承,怎么办呢? JAVA就定义出了接口的概念!
C++ 支持多继承,但真的很复杂,JAVA好多了!