黑马程序员技术交流社区

标题: 抽象类和接口 [打印本页]

作者: 朱烈葵    时间: 2012-8-30 09:09
标题: 抽象类和接口
既然有了接口,为什么还要抽象类呢?
作者: 黑马张旭明    时间: 2012-8-30 09:30
1.接口全部都是抽象方法,必须全部覆盖,而抽象类则只有一部分抽象方法。如果我要定义一个类里面有些方法希望被覆盖,有些方法看情况覆盖,有些方法不希望覆盖(final修饰),接口就不能达到要求了,只有抽象类满足要求。
2.接口允许多实现,而抽象类和一般类一样只能单继承,假如定义一个类,这个类可以实现多个接口,但是只能继承一个抽象类。
作者: 朱烈葵    时间: 2012-8-30 10:02
黑马张旭明 发表于 2012-8-30 09:30
1.接口全部都是抽象方法,必须全部覆盖,而抽象类则只有一部分抽象方法。如果我要定义一个类里面有些方法希 ...

有道理,应该是这样
作者: 蓝迪    时间: 2012-8-30 10:26
接口和抽象类的区别:
1 抽象类中有抽象方法和非抽象方法,所有当子类继承父类的时候,子类就可以直接把父类中的非抽象方法拿来用,不需要全部复写,就能创建对象
  接口中全都是抽象方法,当子类实现接口时,必须把所有的抽象方法全部复写,才能创建对象进行实例化

既然抽象类那么轻松,那为什么还要接口呢?
2 因为java中不支持多继承,只能单继承,但是,接口可以被类多实现,也是对多继承不支持的转换形式,java支持多实现
  
不支持多继承的原因: 是因为父类当中的方法可能会重复,会导致子类调用此方法会出现问题
而支持多实现的原因: 是因为接口中的方法都是抽象的,没有方法体,可以让子类任意定义

一个类在继承一个类的同时还可以实现多个接口
这样更方便于对程序进行功能扩展
   
作者: 孙鑫    时间: 2012-8-30 17:27
不是所有的都要用接口而不用抽象类
接口用来定义行为,实现接口的类可以实现这些行为,从而使定义与实现分离
抽象类作为公共的父类,继承它的子类能复用或扩展父类的某些行为或属性


作者: 给生活加点料    时间: 2012-8-30 18:47
声明方法的存在而不去实现它的类被叫做抽象类,它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。
接口是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。




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