当前位置:  技术问答>java相关

接口、抽象类,看书看不懂,不明白是什莫东西,有沈莫用

    来源: 互联网  发布时间:2017-04-27

    本文导语:  小弟愚笨,请多指教 | JAVA编程语言支持接口,你可以使用接口来定义行为的协议。这些行为可以在类分级结构中的任何类中被执行。 接口定义了行为的协议,这些行为可以在类分级结构中的...

小弟愚笨,请多指教

|
JAVA编程语言支持接口,你可以使用接口来定义行为的协议。这些行为可以在类分级结构中的任何类中被执行。
接口定义了行为的协议,这些行为可以在类分级结构中的任何类中被执行。接口定义了许多方法但是没有执行它们。类履行接口协议来执行所有定义在接口中的方法,因此适合某些行为。 
  因为接口是简单的未执行的系列以及一些抽象的方法,你可能会思考究竟接口于抽象类有什么区别。知道了它们的区别是相当重要的。 它们之间有以下的区别:
接口不能执行任何的方法,而抽象类可以。 
类可以执行许多接口,但只有一个父类。 
接口不是类分级结构的一部分。而没有联系的类可以执行相同的接口。 


|
接口和抽象类都是需要继承并实现的,JAVA不能多重继承,但可以继承多个接口,间接实现了多重继承,接口、抽象类中定义的方法需要在继承之后的类中实现,其实接口就是一个标准,其中包含了对象实例的共有方法,你可以查JDK的API,会发现有很多的接口和抽象类,比如
public class Vector
extends AbstractList
implements List, Cloneable, Serializable
它继承了AbstractList,同时继承了List, Cloneable, Serializable
AbstractList是抽象类,List, Cloneable, Serializable都是接口,你可以看看它们里面的方法,再对比一下Vector中的方法,理解其中的思想就好!

|
这几天看,我把书里的话摘一段(书不在手边,不是原话):

面象对象的设计,要满足的第一原则是开闭原则,要求设计出来的系统,对修改关闭,对扩展开放。这样设计出来的系统,才能有好的稳定性和扩展性。

要满足这样的原则,就需要使用抽象类和接口。
把系统结构抽象出来,形成抽象的系统结构(一般由抽象类来定义),它要能够满足系统的所有要求,一旦定义后不可被修改,这就满足了对修改关闭。
如果以后要修改系统结构(比如要修改结构中间的一个类),显示不能修改它的抽象类(因为结构如果很庞大的话,而一个类只能有一个超类,必须一级一级修改直到最顶层的类,这显然不现实),

但一个类可以实现任意多个接口,
给这个类增加一个接口,这个类的功能就得到了扩展,
这就满足了对扩展开放。

用抽象类加接口来定义系统的结构,
就满足了开闭原则,
使系统结构更合理。

我也是在学习中,以上都是书中的观点,
如果你还不理解抽象类和接口的语法的话,
那还需要先掌握这些,
再体会在设计模式中的用法。

|
还有一个理解接口的方法,在JDBC标准中,定义的都是接口,每种数据库根据不同的情况实现JDBC的接口,在使用不同的JDBC驱动的时候,我们使用的方法都是一样的!

|
http://jspzone.myrice.com/beginner/java/javaconcept.htm

|
gz

|
接口中声明的所有方法,必须在扩展它的所有类中全部实现
而抽象类中声明的方法,可以选择的实现,只实现对自己类有用的部分就可

|
What Is an Interface? 
This section shows you how to create and to use interfaces and talks about why you would use an interface instead of a class. 
An interface defines a protocol of behavior that can be implemented by any class anywhere in the class hierarchy. An interface defines a set of methods but does not implement them. A class that implements the interface agrees to implement all the methods defined in the interface, thereby agreeing to certain behavior. 



--------------------------------------------------------------------------------
Definition: An interface is a named collection of method definitions (without implementations). An interface can also declare constants. 
--------------------------------------------------------------------------------


Because an interface is simply a list of unimplemented, and therefore abstract, methods, you might wonder how an interface differs from an abstract class. The differences are significant. 


An interface cannot implement any methods, whereas an abstract class can. 
A class can implement many interfaces but can have only one superclass. 
An interface is not part of the class hierarchy. Unrelated classes can implement the same interface.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.script接口invocable的类成员方法: getinterface定义及介绍
  • 关于LOCAL接口和REMOTE接口的同时兼顾的问题
  • java命名空间javax.lang.model.element接口typeelement的类成员方法: getinterfaces定义及介绍
  • 请问 linux 是如何调用 alsa的控制接口的??是通过控制接口名字吗?
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getmanagementspecversion定义及介绍
  • LINUX下最大支持虚接口数是多少? 如果我想配置1000个虚接口可以吗?
  • java命名空间java.beans.beancontext接口beancontextproxy的类成员方法: getbeancontextproxy定义及介绍
  • 对于操作系统的程序接口,作业接口,单内核,微内核到底有什么区别?
  • java命名空间javax.print接口uriexception的类成员方法: getreason定义及介绍
  • 对于操作系统的程序接口,作业接口,单内核,微内核到底有什么区别? iis7站长之家
  • java命名空间javax.swing.text接口caret的类成员方法: install定义及介绍
  • 菜鸟提问:一个类实现了一个接口,除了要定义接口的所有方法外,可不可以再添加其他方法?
  • java命名空间javax.swing接口rootpanecontainer的类成员方法: getrootpane定义及介绍
  • 急,请问如何修改网络接口eth为其它名称,如网络接口为abc0, abc1,要修改哪个配置文件?
  • java命名空间javax.swing.text接口highlighter的类成员方法: install定义及介绍
  • 有人在Linux下用过1394接口的设备吗?怎么装载一个1394接口的存储设备呢?
  • java命名空间java.lang.reflect接口parameterizedtype的类成员方法: getrawtype定义及介绍
  • 请问高手:EJB中的远程接口、本地接口、HOME接口的联系与区别是什么?应用时应注意哪些问题?
  • java命名空间javax.management接口descriptorread的类成员方法: getdescriptor定义及介绍
  • C#学习笔记之接口与基于接口的工厂模型
  • java命名空间javax.lang.model.element接口typeparameterelement的类成员方法: getgenericelement定义及介绍
  • 请问为什麽在J2ee中客户端(测试时)用jndi定位enterprise bean的时候,可以把远程接口实例化?接口不是不可以生成对象的吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3