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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张强+ 黑马帝   /  2011-11-9 11:47  /  2241 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

abstract class和interface有什么区别?

8 个回复

倒序浏览
接口是一种特殊的抽象类。
回复 使用道具 举报
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

评分

参与人数 2技术分 +3 收起 理由
宁超 + 1 赞一个!
李印东老师 + 2

查看全部评分

回复 使用道具 举报
而且很好的解决了java类的单继承问题,在继承某个类的同时可以实现多个接口!!!!

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
两种都没有方法体。abstract是抽象类,里面的会有一些看不懂得函数,所以在继承抽象类的时候,必须把抽象类里面所有的抽象方法重写一遍,不然子类也会有抽象方法了!而接口,则是明确里面的方法, 实现接口就是把接口里面的某一个方法重写!也就是接口里面的东西明确,抽象类里面的东西有看不懂的!实现接口只需要重写里面的方法,而继承抽象类则要重写抽象类里面所有的抽象方法!

评分

参与人数 1黑马币 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
abstract 抽象类不能被实例化,抽象类中可以是有非抽象方法,接口中所有的方法都为抽象方法。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
wangqing 黑马帝 2011-11-9 21:59:22
7#
抽象类中可以定义变量、抽象方法和非抽象方法,而接口中只能定义抽象方法,和常量。
回复 使用道具 举报
抽象类里面可以定义方法,也可以实现方法,interface只能定义;
抽象类的的方法在子类中可以不实现,也可以重写父类的方法。 而接口中的所有方法一定要实现,不可遗漏
回复 使用道具 举报
史晓霞 黑马帝 2011-11-10 14:20:43
9#
abstract是抽象类,里面可以有抽象方法(没有实现的方法)和不抽象方法,继承它的必须实现它里面的抽象方法,如果没有实现里面的抽象方法,它也是个抽象类。但是抽象方法必须放在抽象类中,class里的方法都必须有实实现,不能没有实现的方法,interface里面放的是接口,都是没有实现的方法。谁继承抽象类和接口就必须实现它们里面的方法,一个类就可以集成一个抽象类,它可以继承多个接口,可以说接口是继承的多态表现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马