黑马程序员技术交流社区
标题:
抽象类和接口的问题?
[打印本页]
作者:
陈坚
时间:
2012-3-31 12:20
标题:
抽象类和接口的问题?
抽象类和接口有什么区别和联系?
作者:
胡元
时间:
2012-3-31 12:24
抽象类里面还有具体的方法,但是里面一定会有抽象方法。若是一个类里面全部都是抽象方法,那这个类就是接口,
所以区别是:抽象类有具体方法,只能单继承,接口没有具体方法,可以多实现。
联系:都有抽象方法,调用的时候都要复写抽象方法!
作者:
秦岩
时间:
2012-3-31 12:43
本帖最后由 lyqinyan 于 2012-3-31 12:46 编辑
区别与联系:1、都没有方法体
2、通过接口可以支持多重继承,抽象类不支持
3、抽象类可以包含已经实现的方法而接口不可以
作者:
乔玉吉
时间:
2012-3-31 12:53
abstract class和interface的区别
抽象类中可以有不抽象的方法,接口中全是抽象的方法
抽象类用extends继承,接口用implements实现
抽象类中的变量和方法没有默认修饰符,接口中的变量默认为public static final的,接口中的方法默认为public abstract
一个类只能继承一个抽象类,一个类可以实现多个接口
什么时候用抽象类,什么时候用接口
如果能用接口,就不用抽象类,因为别人实现接口可以不占用继承的位置。
如果定义一个抽象的父类,其中所有方法都是抽象的,那么就定义为接口。
如果定义一个抽象的父类的时候,需要有不抽象的方法,那么只能定义为抽象类。
作者:
izwj
时间:
2012-3-31 13:04
本帖最后由 izwj 于 2012-3-31 13:06 编辑
abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多 interface 。
在abstract class 中可以有自己的数据成员,也可以有非 abstarct 的成员方法,而在 interface 中,只能够有静态的不能被修改的数据成员,所有的成员方法都是 abstract 的。
实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
抽象类中的变量值可以在子类中重新定义,也可以重新赋值。
接口中的方法默认都是 public,abstract 类型的(你可以不必显示的加上 public , abstract)。
作者:
黑马胡林
时间:
2012-3-31 13:51
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口
作者:
姜志钦
时间:
2012-3-31 14:51
抽象类可以有实体方法也可以有抽象方法,而接口只能有抽象方法!
作者:
胡川
时间:
2012-3-31 17:21
抽象类与接口:
抽象类和接口都包含可以由派生类继承的成员,他们都不能实例化,但可以声明它们的变量。如果这样做,就可以使用多态性把继承这两种类型的对象指定给它们的变量。接着听过这些变量来使用这些类型的成员,但不能直接访问派生类的其它成员。
抽象类和接口的区别主要有以下区别:
□它们的派生类只能继承一个类,即只能继承一个基类,即只能直接继承一个抽象类,但可以继承多个接口。
□抽象类中可以定义成员的实现,但接口中不可以。
□抽象类中可以包含字段、构造函数、析构函数、静态成员和常量等,但接口不行。
□抽象类中成员可以是私有的(只要它不适抽象的)、受保护的、内部的、受保护和内部的,但接口成员必须是公共的。
□抽象类和接口这两种类型用于完全不同的目的。抽象类主要用作对象系列的基类,共享某些主要特性,例如共同的目的和结构。接口则主要用于类,这些类在基础水平上有所不同,但仍可以完成某些相同的任务。
作者:
袁野
时间:
2012-4-1 08:22
飘过。。。
作者:
陈苓
时间:
2012-4-1 09:45
抽象类和接口的区别?*****
答:相同点:
它们都是不断向上抽取出来的一个抽象的内容。
区别1:抽象类只能被单继承
接口可以被多实现,避免了单继承的局限性
区别2:抽象类中可以定义抽象方法和非抽象方法,它可以用于定义体系的基本性内容,接口中只能定义抽象方法,它主要用于队形的功能扩展。
区别3;抽象类是继承关系,是is a 关系。
接口是实现关系,是like a 关系
区别4:抽象类中的成员修饰符都是自定义
接口中的成员修饰符是固定的。
作者:
胡奎
时间:
2012-4-1 09:58
抽象类与接口:
抽象类和接口都包含可以由派生类继承的成员,他们都不能实例化,但可以声明它们的变量。如果这样做,就可以使用多态性把继承这两种类型的对象指定给它们的变量。接着听过这些变量来使用这些类型的成员,但不能直接访问派生类的其它成员。
抽象类和接口的区别主要有以下区别:
□它们的派生类只能继承一个类,即只能继承一个基类,即只能直接继承一个抽象类,但可以继承多个接口。
□抽象类中可以定义成员的实现,但接口中不可以。
□抽象类中可以包含字段、构造函数、析构函数、静态成员和常量等,但接口不行。
□抽象类中成员可以是私有的(只要它不适抽象的)、受保护的、内部的、受保护和内部的,但接口成员必须是公共的。
□抽象类和接口这两种类型用于完全不同的目的。抽象类主要用作对象系列的基类,共享某些主要特性,例如共同的目的和结构。接口则主要用于类,这些类在基础水平上有所不同,但仍可以完成某些相同的任务
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2