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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘丽娜 中级黑马   /  2012-10-29 19:52  /  2531 人查看  /  8 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘丽娜 于 2012-10-30 19:46 编辑

抽象类和接口 都有哪些区别呢?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

8 个回复

倒序浏览
这个我还真是刚看过,巧了。。

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

    接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成 员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以 在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从 接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 徐升兴 于 2012-10-29 20:13 编辑

抽象类可以看做是一个普通的类里面有抽象接口,用abstract修饰了,里面有抽象方法,也可以有普通方法,这个类不能实例化
接口里面全都是抽象方法,也不能实例化,也就是创建对象。如果实现接口,必须要覆盖接口里面的所有抽象方法,否则无法实现。
在用接口的时候还有一个小技巧就是匿名内部类,比如你定义了一个接口
但是在这个程序内,你这个接口只调用了一次,那么就可以定义一个匿名内部类来实现这个接口
new 接口名(){复写接口的方法}


接口的出现解决了java单继承的局限性

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
抽象类只能被继承,所以,继承他的是他的子类。  接口是定义一种规则,实现接口的类,必须实现接口里的方法。而抽象类里,如果里面不是抽象方法,就不用实现,就直接继承过来了,可以直接使用。   一个是继承,一个是实现。 从面向对象和字面的意思,分析下,再看看抽象类和接口的使用方法。 就不难区分。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
   可以实现多个interface。。。然而却只能继承一个abstract类,再实现接口的同事还可以继承别的类。我想这算是比较重要的一点。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
抽象类可以有非抽象方法,接口里全都是抽象方法,接口可以实现多实现,这是对java只能单继承转换形式吧

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
抽象类除了类声明时的abstract修饰及抽象方法外其余的和普通类一样,接口来说只有抽象方法和public static final默认修饰的字段;
一个类只能继承一个抽象类,却可以同时实现多个接口;
抽象类与其派生类是继承的关系,父类和派生类之间存在"is a"的关系,即父类和派生类在概念本质上应该是相同的,
对于接口则并不要求与其实现类有什么本质上的关联。


评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
邢晏玮 来自手机 中级黑马 2012-10-30 01:32:23
8#
接口是抽象类的一个特殊表现形式,接口中的方法全部为抽象方法,而抽象类中的方法不一定都是抽象方法,虽然说,接口和抽象类都要覆写其中的方法,但是如果你用到抽象类的时候,其中有一个不是抽象方法,你就可以继承后继续使用,而接口就不是,你要而且是必须全部覆写里面的全部方法!来自: Android客户端

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
谢谢各位的回答 明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马