java接⼝的作⽤和意义是什么
java接⼝的定义
接⼝在JAVA编程语⾔中是⼀个抽象类型,是抽象⽅法的集合,接⼝通常以interface来声明。⼀个类通过继承接⼝的⽅式,从⽽来继承接⼝的抽象⽅法。
接⼝并不是类,编写接⼝的⽅式和类很相似,但是它们属于不同的概念。类描述对象的属性和⽅法。接⼝则包含类要实现的⽅法。
除⾮实现接⼝的类是抽象类,否则该类要定义接⼝中的所有⽅法。
接⼝⽆法被实例化,但是可以被实现。⼀个实现接⼝的类,必须实现接⼝内所描述的所有⽅法,否则就必须声明为抽象类。另外,在 Java 中,接⼝类型可⽤来声明⼀个变量,他们可以成为⼀个空指针,或是被绑定在⼀个以此接⼝实现的对象。
java接⼝的作⽤
1、通过接⼝可以实现不相关类的相同⾏为,⽽不需要了解对象所对应的类。
2、通过接⼝可以指明多个类需要实现的⽅法。
3、通过接⼝可以了解对象的交互界⾯,⽽不需了解对象所对应的类。
类描述了⼀个实体,包括实体的状态,也包括实体可能发出的动作。
接⼝定义了⼀个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。
所以接⼝有点象⼀个规范、⼀个协议,是⼀个抽象的概念;⽽类则是实现了这个协议,满⾜了这个规范的具体实体,是⼀个具体的概念。
从程序⾓度,简单理解,接⼝就是函数声明,类就是函数实现。需要注意的是同⼀个声明可能有很多种实现。
(1)接⼝中定义类⽅法的原型,但是不能说是空⽅法,因为空⽅法的意思是有实现体,只不过实现体是空操作。实际上接⼝没有定义任何实现体。具体的实现体都是在实现接⼝的类中,接⼝只是定义了这些⽅法的调⽤⽅式。
(2)⼀个类描述了⼀个实体,这个实体可能是⼀个复杂的对象,它的动作很多,如果把这些动作分类,⽤接⼝a定义其中的某⼀组动作,接⼝b定义其中的另外⼀组动作,这样的结构,⽐较清楚。
这种⽅式具备了多继承的优点,避免了多继承的缺陷。实际上在历史上,接⼝在很⼤程度上,是为了解决多继承带来的种种问题⽽设计出来的。
(3)包中那些已定义的接⼝,怎么知道那⾥⾯定义了什么⽅法。
接⼝⾥定义了⽅法的输⼊输出,这些都是协议,具体的实现都在每个类中。对于很多只需要抽象接⼝的地⽅,不需要知道具体的类是什么,只要这个类实现了这个接⼝就可以了。
java接⼝的意义
接⼝会出现,最关键的原因应该是Java中向上转型的出现,因为向上转型,⼦类中⼀些⽗类中不存在的⽅法(或者说不共⽤的⽅法)便不能继续调⽤了。这样就很⿇烦,我们需要⼦类中的⽅法,但是这下该怎么办呢?
java类的概念第⼀种在⽗类中加⼦类的⽅法。但是,这个⽅法在⽗类中其实真的没有必要,⽅法函数体都不需要。所以会⽤抽象⽅法,这样就有了抽象⽅法的诞⽣。可是就算这样了,问题还是没有解决,因为真的太⿇烦了,如果有其他的⼦类要继承
法,这样就有了抽象⽅法的诞⽣。可是就算这样了,问题还是没有解决,因为真的太⿇烦了,如果有其他的⼦类要继承⽗类,也难免会有向上转型的时候,那么,这个时候难道要⼀直往⽗类中加抽象⽅
法么?显然不合理!
于是就有了第⼆种⽅法,接⼝便诞⽣了,这也解释了为什么接⼝中都是抽象的⽅法!所以有了接⼝,⼦类中需要的⽅法,但是⽗类中没有的⽅法可以直接⽤接⼝来完成,也就不⽤再修改⽗类的⽅法,在多⼈合作完成⼀项⼯程的时候也更加的⽅便。
java接⼝的使⽤
两个类中的两个类似的功能,调⽤他们的类动态的决定⼀种实现,那他们提供⼀个抽象⽗类,⼦类分别实现⽗类所定义的⽅法。
问题的出现:Java是⼀种单继承的语⾔,⼀般情况下,哪个具体类可能已经有了⼀个超类,解决是给它的⽗类加⽗类,或者给它⽗类的⽗类加⽗类,直到移动到类等级结构的最顶端。这样⼀来,对⼀个具体类的可插⼊性的设计,就变成了对整个等级结构中所有类的修改。
可插⼊性
在⼀个等级结构中的任何⼀个类都可以实现⼀个接⼝,这个接⼝会影响到此类的所有⼦类,但不会影响到此类的任何超类。此类将不得不实现这个接⼝所规定的⽅法,⽽其⼦类可以从此类⾃动继承这些⽅法,当然也可以选择置换掉所有的这些⽅法,或者其中的某⼀些⽅法,这时候,这些⼦类具有了可
插⼊性(并且可以⽤这个接⼝类型装载,传递实现了他的所有⼦类)。
我们关⼼的不是那⼀个具体的类,⽽是这个类是否实现了我们需要的接⼝。
接⼝提供了关联以及⽅法调⽤上的可插⼊性,软件系统的规模越⼤,⽣命周期越长,接⼝使得软件系统的灵活性和可扩展性,可插⼊性⽅⾯得到保证。
类型
使⽤Java接⼝将软件单位与内部和外部耦合起来。使⽤Java接⼝不是具体的类进⾏变量的类型声明,⽅法的返还类型声明,参量的类型声明,以及数据类型的转换。
在理想的情况下,⼀个具体的Java类应当只实现Java接⼝和抽象Java类中声明的⽅法,⽽不应当给多余⽅法。
等级结构
Java接⼝(以及抽象类)⼀般⽤来作为⼀个类型的等级结构的起点。
如果⼀个类已经有了⼀个主要的超类型,那么通过实现⼀个接⼝,这个类可以拥有另⼀个次要的超类型,这种次要的超类型叫做混合类型。
以上就是动⼒节点java培训机构⼩编介绍的“java接⼝的作⽤和意义是什么”的内容,希望对⼤家有帮助,更多java最新资讯请继续关注动⼒节点java培训机构官⽹,每天会有精彩内容分享与你。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论