黑马程序员技术交流社区

标题: 抽象类和接口的区别对吗?求补充 [打印本页]

作者: 337091921    时间: 2013-4-26 21:07
标题: 抽象类和接口的区别对吗?求补充
相同点:
都是不断向上抽取而来的
不同点:
1,抽象类需要被继承,而且只能单继承
   接口需要被实现,而且可以多实现
2,抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用
    非抽象方法。
    接口中只能定义抽象方法,必须有子类去实现
3,抽象类的继承,是在该体系的基本共性内容。父和子有共性
   接口的实现,在定义体系而外功能。接口可以给子类其他的功能
作者: 殇_心。    时间: 2013-4-26 21:21
4.接口只能定义接口只可以定义static final成员变量
而抽象类可以定义其它修饰符修饰的变量。
作者: 极限冰风    时间: 2013-4-26 22:20
接口与实现相分离,从而降低耦合性,而且接口中定义的方法都是抽象的方法,接口中只能定义常量,不能定义变量,且都是用static ,和final修饰的如果你没有自己定义系统将帮你定义,方法也是一样是抽象的方法,接口和抽象类一样不能实例话,但接口可以实现多继承,而抽象类不能;接口不能有实例的方法和构造方法,接口要用implements关键字实现接口里面的方法都必须实现;
且接口表示的是一中约定;
如果一个类中的方法都是抽象的方法就考虑接口了;但要是有实例方法或构造函数的话就用抽象类了
抽象类里可以有实例方法,和构造函数,但只能实现单继承要用extends关键字,


作者: 曾德强    时间: 2013-4-26 22:49
补充下:
1,貌似在java里都是单继承,即一个子类只有一个父类。而一个类可以实现多个接口;
2,当一个类实现一个接口是必须实现其全部抽象方法;
3,两者用的关键字不一样(大家应该都知道);
4,其他上楼说的很不错:
作者: HM周磊    时间: 2013-4-28 22:25
抽象类&接口的区别:
共性:都是不断抽取出来的抽象的概念
区别:
抽象类体现继承关系,一个类只能单继承
接口体现实现关系,一个类可以多实现
抽象类是继承,是 "is a "关系
接口是实现,是 "like a"关系
抽象类中定义体系中的基本共性功能
接口通常定义体系中对象的扩展功能
抽象类中可以定义非抽象方法,供子类直接使用
接口的方法都是抽象,接口中的成员都有固定修饰符



作者: breeze    时间: 2013-4-28 22:58
接口中的方法默认都是public修饰的, 所以在重写接口中的方法时要注意不能用比接口中更加严谨的的修饰符, 就是重写时写成public的就行, 还有在接口中成员变量默认修饰符是public static final修饰的
作者: 曹睿翔    时间: 2013-5-1 07:41
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
作者: xiewen    时间: 2013-5-1 13:59
接口不能定义方法的实现,不能定义除static final以外的成员变量,而接口可以定义。
抽象类的方法可以定义成模板方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2