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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 穆_升 中级黑马   /  2012-10-15 22:55  /  1469 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类和接口有什么主要区别呢?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 梁世喜 于 2012-10-15 23:04 编辑


不好意思
忘了看是ASP.Net了。不过也差不多,、。


1、抽象类在Java语言中表示一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个接口。
2、在抽象类中可以有自己的数据成员,也可以有非抽象类的成员方法,而接口中,只能有静态的不能被修改的数据成员(即成员属性必须是static final的,但接口中一般不定义数据成员),所有的成员方法都是抽象的。
3、抽象类和接口所反映的设计理念不同。抽象类表示“is-a”关系,接口表示“like-a”关系。
4、实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法;接口中不能有实现方法。
5、接口中定义的变量默认是public static final 型,必须给其赋初值,所以实现类中不能重新定义,也不能改变其值。抽象类中的变量默认是友好型(friendly),其值可以在子类中重新定义,也可以重新赋值。
6、接口中的方法默认都是public,abstract类型的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
梁世喜 发表于 2012-10-15 23:02
不好意思
忘了看是ASP.Net了。不过也差不多,、。

相同点:
都不能被直接实例化,都可以通过继承实现其抽象方法。
不同点:
接口支持多继承;抽象类不能实现多继承。
接口只能定义行为;抽象类既可以定义行为,还可能提供实现。
接口可以用于支持回调(CallBack);抽象类不能实现回调,因为继承不支持。
接口只包含方法(Method)、属性(Property)、索引器(Index)、事件(Event)的签名,但不能定义字段和包含实现的方法;


另外,再看看C#中的接口和类的区别。
回复 使用道具 举报
相同点:
都不能被直接实例化,都可以通过继承实现其抽象方法。
不同点:
接口支持多继承;抽象类不能实现多继承。
接口只能定义行为;抽象类既可以定义行为,还可能提供实现。
接口可以用于支持回调(CallBack);抽象类不能实现回调,因为继承不支持。
接口只包含方法(Method)、属性(Property)、索引器(Index)、事件(Event)的签名,但不能定义字段和包含实现的方法;


另外,再看看C#中的接口和类的区别。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马