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

请问class,abstract class,interface的区别和联系.

    来源: 互联网  发布时间:2015-09-21

    本文导语:  请问class,abstract class,interface的区别和联系. 麻烦说详细点,最好有简单的例子. | abstruct class与class的区别在于前者不能用new进行实例化。一般在该类内部都存在一些抽象方法(即只给出定义而...

请问class,abstract class,interface的区别和联系.
麻烦说详细点,最好有简单的例子.

|
abstruct class与class的区别在于前者不能用new进行实例化。一般在该类内部都存在一些抽象方法(即只给出定义而没有具体实现)。需要继承的子类或超类实现其方法。
interface可以认为是“纯”的abstruct class.区别在于前者在实现接口时必须实现所有接口方法。而后者只须实现声明为abstruct的方法。

抽象方法:只含声明,没有主体。 如  abstruct void x();

示例:

class OriCs { void x(){}}
abstruct class AbsCs { abstruct void y();}
interface JieKou { void z(); }

|
以上3者的差别主要在于method的实现上面

定义为class的方法一定都要实现,不能有一个或多个方法只有method定义而没有实现。

定义为abstract class的类,可以有一个或多个方法定义,不用实现,甚至可以都不实现,当然都实现也没问题。注意:只有方法定义的method前面一定要加上abstract关键字,有abstract method的类一定要声明为abstract class

interface的所有的方法都只要定义而不用实现,所有的方法实现都在子类中实现。interface主要用于多重继承,让一个类可以拥有多种特性。

例如:
class A extends Canvas implements Runnable
{
......

}

class A继承了Canvas,可以用来画图,也有Thread的特性,可以起另一个线程来载入图片。

不知道这样的回答,你是否满意。

|
各位都在讲实践,没人讲理论嘛。。。

class,abstract class,interface这三个东西的区别不仅仅在这些外部特征上。class是对实际问题的映射;interface则是对于可接受的消息的定义。所以每一个object has an interface。

abstract的意思,更多的是“抽象”。即使全部的方法都不是abstract,也可以定义abstract class。它的意义在于对实际问题更高层的抽象,说白了,就是做“不存在”的基类。就象“动物”这样的类,一般都是abstract的,因为世界上没有“动物”这个东西,只有属于“动物”这个类型的东西。

很拗口哦。这些理论书上有讲,不过想真正理解,
1。大量的实践+悟性
2。英文要好

thinking in java的中英文版区别很大,就像所有的书一样。

|
TIJ里面建议能用Interface尽可能用Interface,你想在Java里面只有单继承,这个权利可是要谨慎利用的,Interface是无所谓的有多少都行。这个做法比较理论化的说法是,可以更好的保持一个层次结构。呵呵。

楼上有些人闲问题浅显,那就在你设计时,什么时候定义为abstract,什么时候定义为Interface;如果要实现一种“继承”关系时,两种都可选,你是选择实现Interface,还是选择继承类呢?
说实际点,别老是看了书,知道了有这么回事就在这评论。

|
你不能直接用一个abstract 类的方法,你必须继承这个abstract class ,
当一个类中的方法暂时还没有方法体的时候,最好吧他定义为abstarct class,

    
 
 

您可能感兴趣的文章:

  • 请问如何运行java程序。就是xxxx.class。
  • 请问,linux 7.3 下装好了jdk但是class path 怎么设置?
  • 请问谁知道那有classes.zip for jdk1.2 ?
  • 请问我怎么才能将一个java文件编译成class!?
  • 请问哪里有反编译.class文件的反编译器?
  • 请问如何在jsp页面中用class在网页上输出信息?100分
  • 请问:在jsp中如何import自己编写的*.class
  • 请问IBM Visual Age Java里面,如何调用处在Default Package ...里面的Class?
  • 请问用JBUILDER打包几个CLASS成JAR的步骤?
  • 请问用JBUILDER7怎么把一个.class文件转变为.exe 文件,请具体说明一下,谢谢了!
  • 请问能否将编译后的CLASS文件恢复为JAVA,怎么转?
  • 请问怎样给.class文件加密
  • 请问有将class文件转换为可执行文件(如Windows下的exe文件)的工具吗?
  • 请问如何捣乱.class文件,使得反编译器对他失去作用?
  • 请问:如何在java程序内获得 .class 文件的全路径?
  • 请问:jsp中用到的.class和.java后缀的文件应放在哪个目录下??(Tomcat)
  • 请问用什么命令把一个目录下的所有CLASS,打包成jar???谢谢
  • 请问JavaBean用编辑器写好后扩展名是什么?是否必须编译成.class吗?
  • 请问java bean 与普通的java class的主要区别?
  • 请问如何将.java的servlet文件编译成.class文件??我用的是weblogic,不知道怎么用?
  • linux启动不了,Bringup loopback interface时出错,请问是什么原因?
  • 请问 tun/tap interface原理?
  • 请问SCJP要考Object Stream/Serializable Interface/Sockets吗?急急急
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!
  • 请问linux下GUI开发的问题!
  • 请问出现fstab文件丢失该怎么修复呀?
  • 请问这个方法如何调用?
  • 请问一个奇怪的问题!
  • 请问在网页中打开的新窗口,如何让其居中。
  • 请问我该学什么了
  • 请问安装zhcon,cxterm问题
  • 非常急! 请问daemontools 在red hat 9下的安装问题? 在线等待 iis7站长之家


  • 站内导航:


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

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

    浙ICP备11055608号-3