A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈坚 中级黑马   /  2012-3-31 12:20  /  2539 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类和接口有什么区别和联系?

10 个回复

倒序浏览
抽象类里面还有具体的方法,但是里面一定会有抽象方法。若是一个类里面全部都是抽象方法,那这个类就是接口,
所以区别是:抽象类有具体方法,只能单继承,接口没有具体方法,可以多实现。
联系:都有抽象方法,调用的时候都要复写抽象方法!
回复 使用道具 举报
本帖最后由 lyqinyan 于 2012-3-31 12:46 编辑

区别与联系:1、都没有方法体
            2、通过接口可以支持多重继承,抽象类不支持
            3、抽象类可以包含已经实现的方法而接口不可以
回复 使用道具 举报
       
       
abstract class和interface的区别
        抽象类中可以有不抽象的方法,接口中全是抽象的方法
        抽象类用extends继承,接口用implements实现
        抽象类中的变量和方法没有默认修饰符,接口中的变量默认为public static final的,接口中的方法默认为public abstract
        一个类只能继承一个抽象类,一个类可以实现多个接口


什么时候用抽象类,什么时候用接口
        如果能用接口,就不用抽象类,因为别人实现接口可以不占用继承的位置。
        如果定义一个抽象的父类,其中所有方法都是抽象的,那么就定义为接口。
        如果定义一个抽象的父类的时候,需要有不抽象的方法,那么只能定义为抽象类。
回复 使用道具 举报
本帖最后由 izwj 于 2012-3-31 13:06 编辑

abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多 interface 。

在abstract class 中可以有自己的数据成员,也可以有非 abstarct 的成员方法,而在 interface 中,只能够有静态的不能被修改的数据成员,所有的成员方法都是 abstract 的。

实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。

接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

抽象类中的变量值可以在子类中重新定义,也可以重新赋值。

接口中的方法默认都是 public,abstract 类型的(你可以不必显示的加上 public , abstract)。
回复 使用道具 举报
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口
回复 使用道具 举报
抽象类可以有实体方法也可以有抽象方法,而接口只能有抽象方法!
回复 使用道具 举报
胡川 中级黑马 2012-3-31 17:21:18
8#
抽象类与接口:
    抽象类和接口都包含可以由派生类继承的成员,他们都不能实例化,但可以声明它们的变量。如果这样做,就可以使用多态性把继承这两种类型的对象指定给它们的变量。接着听过这些变量来使用这些类型的成员,但不能直接访问派生类的其它成员。
    抽象类和接口的区别主要有以下区别:
□它们的派生类只能继承一个类,即只能继承一个基类,即只能直接继承一个抽象类,但可以继承多个接口。
□抽象类中可以定义成员的实现,但接口中不可以。
□抽象类中可以包含字段、构造函数、析构函数、静态成员和常量等,但接口不行。
□抽象类中成员可以是私有的(只要它不适抽象的)、受保护的、内部的、受保护和内部的,但接口成员必须是公共的。
□抽象类和接口这两种类型用于完全不同的目的。抽象类主要用作对象系列的基类,共享某些主要特性,例如共同的目的和结构。接口则主要用于类,这些类在基础水平上有所不同,但仍可以完成某些相同的任务。

点评

谢谢,使我能够清楚的了解了它们!  发表于 2012-3-31 18:21
回复 使用道具 举报
袁野 黑马帝 2012-4-1 08:22:47
9#
飘过。。。
回复 使用道具 举报
抽象类和接口的区别?*****
   答:相同点:
            它们都是不断向上抽取出来的一个抽象的内容。
      区别1:抽象类只能被单继承
             接口可以被多实现,避免了单继承的局限性
      区别2:抽象类中可以定义抽象方法和非抽象方法,它可以用于定义体系的基本性内容,接口中只能定义抽象方法,它主要用于队形的功能扩展。
      区别3;抽象类是继承关系,是is a 关系。
             接口是实现关系,是like a 关系
      区别4:抽象类中的成员修饰符都是自定义
              接口中的成员修饰符是固定的。
回复 使用道具 举报
抽象类与接口:
    抽象类和接口都包含可以由派生类继承的成员,他们都不能实例化,但可以声明它们的变量。如果这样做,就可以使用多态性把继承这两种类型的对象指定给它们的变量。接着听过这些变量来使用这些类型的成员,但不能直接访问派生类的其它成员。
    抽象类和接口的区别主要有以下区别:
□它们的派生类只能继承一个类,即只能继承一个基类,即只能直接继承一个抽象类,但可以继承多个接口。
□抽象类中可以定义成员的实现,但接口中不可以。
□抽象类中可以包含字段、构造函数、析构函数、静态成员和常量等,但接口不行。
□抽象类中成员可以是私有的(只要它不适抽象的)、受保护的、内部的、受保护和内部的,但接口成员必须是公共的。
□抽象类和接口这两种类型用于完全不同的目的。抽象类主要用作对象系列的基类,共享某些主要特性,例如共同的目的和结构。接口则主要用于类,这些类在基础水平上有所不同,但仍可以完成某些相同的任务
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马