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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苏小惠 中级黑马   /  2014-1-6 22:21  /  1445 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类的可以有抽象方法,也可以有一般方法。接口里面都是抽象方法,当一个类无论extends继承还是implements接口都是实现相同的功能,那具体什么时候选择抽象类,什么时候选择接口?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

9 个回复

倒序浏览
这个得看具体情况吧!如果你要实现的功能不需要全部复写抽象方法!那就抽象类!如果要用到所有的功能!或者说你必须要用到这个接口那就必须用接口!

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
接口用于扩展功能,当不需要创建对象时用抽象类
回复 使用道具 举报
成员特点
        抽象类:
                成员变量:可以是变量,也可以是常量。
                构造方法:有构造方法。
                成员方法:可以是抽象方法,也可以是非抽象方法。
       
        接口:
                成员变量:只能是常量。
                          默认修饰符:public static final
                成员方法:只能是抽象方法。
                          默认修饰符:public abstract

设计理念的区别
        抽象类被继承,这个类中定义的是整个继承体现的共性内容。
                体现:is a
        接口被实现,这个接口中定义的是整个体现的扩展内容。
                体现:like a

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
如果申明一个抽象方法,,就必须将这个抽象方法的类定义为抽象类。
抽象类被继承后需要实现其中的抽象方法,子类需要将抽象类中的方法进行覆盖。
在java中,类不能同时继承多个父类,面临这种问题,接口就出现了
接口是抽象类的延伸,可以将它看成纯粹的抽象类,接口的所有方法都没有方法体。
什么时候使用要根据,具体的情况,记住一点,接口的出现时为了解决java中类不能继承多个父类的问题。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
当描述一组方法的时候使用接口
当描述一个虚拟的物体的时候使用抽象类
回复 使用道具 举报
比如多线程
类必须继承Thread类或者实现Runnable接口,才能多开线程.
两种方的目的都是对run()进行重写.
并且,Runnable就只一个抽象方法run();
下面语句出于API...
如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应为该类创建子类。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
接口是一种类的规范;比如人,人可以具有不同的技能但实现方法不同就可以定义成接口或抽象类,抽象类必须继承而且必须复写里面的方法,继承就增加了耦合性,为了降低耦合性建议使用接口,以为java支持多实现不支持多继承;当你需要添加不同属性时建议用接口,而他们共同的属性建议用继承
回复 使用道具 举报
接口的出现时为了解决java中类不能继承多个父类的问题,这句感觉讲的挺到位的
回复 使用道具 举报
抽象类和其他类之间是继承的关系,当一个类是另一个的一种时,要使用继承关系;而接口和类之间是实现的关系,一个类很像另一个类但不是它的一种时就用接口。抽象类中定义体系中的基本共性功能。接口通常定义体系中对象的扩展功能。说白了,如果是基本功能,就用抽象类;如果是扩展功能,就用接口。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

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